2013-06-27 2 views
-1

Мне нужна ваша помощь. Я делаю контрольную программу, использующую Wiimote, и мне нужно сделать 2 разных типа управления. Каждый код контроллера определяется в классе controlType1 и controlType2 (который № 2 здесь не включен, но в основном он совпадает с # 1).Как переключить объект с помощью прослушивателей событий в java?

Идея заключается в том, что когда я нажимаю определенную кнопку на WiiMote, контроллер переключается с type1 на type2. Я создаю экземпляр двух объектов, и он должен удалить слушателя одного из объектов при нажатии кнопки и изменить его на другой объект.

В настоящее время я зашел так далеко и застрял здесь. Любая идея, как мне это сделать?

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 
    } 
} 
} 
+0

* "Wiimote" * Что это? –

+1

никогда не слышал о Nintendo Wii? это контроллер –

+0

.. Никто не слышал о ссылке на источник информации? Если для этого нет тега, это хороший признак. –

ответ

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; 
    } 
} 
+0

как передать событие из класса controlType1 так, что метод onSwitchEvent() в другом классе будет распознавать? спасибо в любом случае за помощь –

+0

PLS, можете ли вы описать свою задачу с большей ясностью. У вас есть два controllesr и хотите узнать, какой контроллер был уволен? –