-1

我需要你的帮助。我正在制作一个使用 Wiimote 的控制程序,我需要制作 2 种不同类型的控制。每个控制器代码都在类 controlType1 和 controlType2 中定义(这里不包括 #2,但大部分与 #1 相同)。

这个想法是,当我按下 WiiMote 上的某个按钮时,控制器从 type1 切换到 type2。我已经实例化了 2 个对象,它应该在按下按钮时删除其中一个对象的侦听器并将其更改为另一个对象。

目前,我已经走了这么远并被困在这里。知道我该怎么做吗?

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 回答