これが一般的な文脈です。
Main.asで、Intro screenをロードするコンテナをロードします。このイントロ画面には、最初の Leapmotion インタラクション (ボタンをクリックするだけ) があり、Leapmotion のジェスチャーで制御される新しい画面が読み込まれます。
最初の呼び出しでは、コントローラーはうまく動作しますが、ボタンをクリックして新しい画面が読み込まれると、コントローラーが「切断」され、ジェスチャが認識されなくなります。
編集済み すべての画面用に新しい「ユニバーサル」コントローラーを作成しました。これは UController クラスです。
これが私のコントローラーのセットアップです:
package {
import com.leapmotion.leap.Controller;
import com.leapmotion.leap.events.LeapEvent;
import com.leapmotion.leap.Frame;
import com.leapmotion.leap.Hand;
import com.leapmotion.leap.Finger;
import com.leapmotion.leap.Vector3;
import com.leapmotion.leap.util.LeapUtil;
import com.leapmotion.leap.Gesture;
import com.leapmotion.leap.SwipeGesture;
import com.leapmotion.leap.ScreenTapGesture;
import com.leapmotion.leap.CircleGesture;
import flash.display.MovieClip;
import com.leapmotion.leap.Pointable;
//import com.leapmotion.leap.Config;
public class UController extends MovieClip {
public var myController:Controller = new Controller();
public function UController() {
myController.addEventListener( LeapEvent.LEAPMOTION_INIT, onInit );
myController.addEventListener( LeapEvent.LEAPMOTION_CONNECTED, onConnected );
myController.addEventListener( LeapEvent.LEAPMOTION_DISCONNECTED, onDisconnect );
myController.addEventListener( LeapEvent.LEAPMOTION_EXIT, onExit );
myController.addEventListener( LeapEvent.LEAPMOTION_FRAME, onFrame );
}
public function onInit(e:LeapEvent):void{
trace("leap init");
}
public function onConnected(e:LeapEvent):void {
myController.enableGesture( Gesture.TYPE_SWIPE );
//if(myController.config().setFloat("Gesture.Swipe.MinLength", 200.0) && myController.config().setFloat("Gesture.Swipe.MinVelocity", 500)) myController.config().save();
myController.enableGesture( Gesture.TYPE_CIRCLE );
myController.enableGesture( Gesture.TYPE_SCREEN_TAP );
//if(myController.config().setFloat("Gesture.ScreenTap.MinForwardVelocity", 30.0) && myController.config().setFloat("Gesture.ScreenTap.HistorySeconds", .5) && myController.config().setFloat("Gesture.ScreenTap.MinDistance", 1.0)) myController.config().save();
trace("leap connected");
}
public function onDisconnect(e:LeapEvent):void{
trace("leap disconnected");
}
public function onExit(e:LeapEvent):void{
trace("leap exit");
}
public static function onFrame(e:LeapEvent):void{
trace("leap frame");
}
}
}
私のゲーム画面では、onFrame() 関数のみを提供しています...動作しますが、画面全体を完全なアプリケーションとして使用しようとすると、同じ動作が繰り返されます。
最初の画面のみが機能し、2 番目の画面が (Loader() を介して) 読み込まれると、コントローラーは動作を停止します。
どんな助けでも大歓迎です!