2013-06-27 57 views
-1

我需要你的幫助。我正在製作一個使用Wiimote的控制程序,並且我需要製作兩種不同類型的控件。每個控制器代碼在類controlType1和controlType2中定義(其中#2不包括在內,但大部分與#1相同)。如何在java中切換對象與事件監聽器?

這個想法是,當我按下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 
    } 
} 
} 
+0

* 「的Wiimote」 *那是什麼? –

+1

從來沒有聽說過任天堂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

請問您能更清楚地描述您的任務嗎?你有兩個控制器,並且想知道哪個控制器被觸發了? –