AS3 - 为什么使用Flash / AIR手势如此反应迟钝

时间:2013-03-30 03:42:34

标签: performance actionscript-3 flash air gesture

我用Flash和AIR创建了3或4个安卓游戏,手势滑动和平移只是如此反应迟钝,无法使用它们。例如,我试图用平移手势做滑块,它每3次至少错过一次手势。 同样的滑动,我有一个游戏,事情下降,不得不刷卡推动他们恢复一点,但它是成功率的五分之一!

有人在那里使用这些手势与Flash / AIR(在三星S2上)并且你让它工作了吗?

谢谢!

Edualc

1 个答案:

答案 0 :(得分:1)

每个听众的手势都有很高的开销。如果您同时运行多个手势监听器,则每个监听器将运行测试ON_ENTER_FRAME(看起来很轶事)并且问题会成倍增加。如果我在舞台上有多个对象都需要相同的手势,我将监听器添加到舞台,然后测试以查看Event.target是否是我的对象之一。这种做法还允许更好地重用代码。

类似的东西:

Stage.addEventListener(TransformGestureEvent.GESTURE_SWIPE, swipped);
Stage.mouseChildren = false;
function swipped(e:TransformGestureEvent):void {
    if(array_of_objects.indexOf(e.target)) {
        Stage.removeChild(e.target);
    }
}

如果所有下落的对象都在一个包装容器中,那么这种方法效果最好,因此您不必从舞台的所有子节点中删除鼠标事件,只需从包装器的子节点中删除。

如果您无法从代码的位置(课堂内)访问舞台,则可以使用DisplayObject.Stage.addEventListener...