这是一般背景。
在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() 函数……它可以工作,但是当我尝试将整个屏幕用作完整的应用程序时,会重复相同的行为。
只有第一个屏幕有效,然后控制器在第二个屏幕加载时停止工作(通过 Loader())。
欢迎任何帮助!