我正在尝试在AS3中执行简单的滑动动作(动作脚本3)。当我通过Android 3.6运行测试时,我没有错误 - 但没有任何反应。盒子根本不移动。这是我正在使用的代码......
import flash.events.MouseEvent;
import flash.net.URLLoader;
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;
import flash.events.TransformGestureEvent;
Multitouch.inputMode = MultitouchInputMode.GESTURE;
//Side Menu Swipe
smenu_mc.addEventListener(TransformGestureEvent.GESTURE_SWIPE, onSwipe);
//Top Menu Swipe
tmenu_mc.addEventListener(TransformGestureEvent.GESTURE_SWIPE, downSwipe);
function onSwipe (e:TransformGestureEvent):void{
if (e.offsetX == 1){
//Menu can only swipe to the right
smenu_mc.x += 278;
}
}
function downSwipe (e:TransformGestureEvent):void{
if (e.offsetY == 1){
//Menu can only swipe down
tmenu_mc.y += 99;
}
}
有谁知道这个问题?谢谢你的帮助!
答案 0 :(得分:0)
最有可能的是,你的问题与焦点有关。
要使代码生效,您附加SWIPE侦听器的对象必须具有当前焦点才能接收事件。如果他们在屏幕外或用户在滑动之前没有触摸它们,他们将不会发送事件。
尝试将您的听众添加到stage
,这样无论刷卡开始的位置,事件都会始终触发。
//Global Swipe
stage.addEventListener(TransformGestureEvent.GESTURE_SWIPE, onSwipe);
要滑动菜单,使用补间库(例如TweenLite)会非常容易。
import com.greensock.TweenLite;
import com.greensock.easing.Quad;
import com.greensock.easing.Bounce;
function slideTopMenuIn(){
TweenLite.to(tmenu_mc,2,{y: 0, ease: Bounce.easeOut});
}
function slideTopMenuOut(){
TweenLite.to(tmenu_mc,1,{y: -tmenu_mc.height, ease: Ease.easeIn});
}
function slideSideMenuIn(){
TweenLite.to(smenu_mc,2,{x: 0, ease: Bounce.easeOut});
}
function slideSideMenuOut(){
TweenLite.to(smenu_mc,1,{x: -smenu_mc.width, ease: Ease.easeIn});
}
function downSwipe (e:TransformGestureEvent):void{
if (e.offsetY == 1){
slideTopMenuIn();
}
if(e.offsetY == -1){
slideTopMenuOut();
}
if (e.offsetX == 1){
slideSideMenuIn();
}
if(e.offsetX == -1){
slideSideMenuOut();
}
}