-1

あなたの助けが必要です。Wiiリモコンを使用する制御プログラムを作成しています.2つの異なるタイプの制御を作成する必要があります. 各コントローラー コードは、クラス controlType1 および controlType2 で定義されます (#2 はここには含まれていませんが、ほとんどは #1 と同じです)。

アイデアは、WiiMote の特定のボタンを押すと、コントローラーが type1 から type2 に切り替わるというものです。私は2つのオブジェクトをインスタンス化しました。ボタンが押されたときにオブジェクトの1つのリスナーを削除し、他のオブジェクトに変更する必要があります。

現在、私はここまで行ってここで立ち往生しています。どうすればいいですか?

public class WiiDroneControl implements ControlSwitchListener {

private Wiimote wiimote;

private WiimoteListener control1 = (WiimoteListener) new controlType1(this);
private WiimoteListener control2 = (WiimoteListener) new controlType2(this);

public WiiDroneControl() {

    Wiimote wiimotes[] = WiiUseApiManager.getWiimotes(1, true);

    if(wiimotes!= null && wiimotes.length > 0)
    {
        wiimote = wiimotes[0];

        wiimote.addWiiMoteEventListeners(control1);
        wiimote.addWiiMoteEventListeners(control2);

        wiimote.activateMotionSensing();
        wiimote.activateContinuous();
        wiimote.getStatus();
    }
}

@Override
public void onSwitchEvent() {
    // TODO Auto-generated method stub

}
}

他のクラス

public class controlType1 implements WiimoteListener{

ControlSwitchListener listener = null;

public controlType1(ControlSwitchListener l) {
    listener = l;
}

@Override
public void onButtonsEvent(WiimoteButtonsEvent e) {
    // TODO Auto-generated method stub
    listener.onSwitchEvent();

    if (e.isButtonOnePressed())
    {
        //switch controller object when this button is pressed
    }
}
}
4

1 に答える 1

0

私があなたの質問を正しく理解していれば...

    public class WiiDroneControl implements ControlSwitchListener {

    private Wiimote wiimote;
    private WiimoteListener control1 =  new controlType1(this);
    private WiimoteListener control2 =  new controlType2(this);
    private WiimoteListener current = control1;

    public WiiDroneControl() {

        Wiimote wiimotes[] = WiiUseApiManager.getWiimotes(1, true);

        if(wiimotes!= null && wiimotes.length > 0)
        {
            wiimote = wiimotes[0];
            wiimote.addWiiMoteEventListeners(current);

            wiimote.activateMotionSensing();
            wiimote.activateContinuous();
            wiimote.getStatus();
        }
    }

    @Override
    public void onSwitchEvent() {
        current = current.equals(control1) ? control2 : control1;
    }
}
于 2013-06-27T09:35:59.400 に答える