【问题标题】:AS3 - why are the gestures so unresponsive using Flash / AIRAS3 - 为什么使用 Flash / AIR 的手势反应迟钝
【发布时间】:2013-03-30 03:42:34
【问题描述】:
我已经用 Flash 和 AIR 创建了 3 或 4 款 Android 游戏,但手势滑动和平移非常迟钝,无法使用它们。例如,我正在尝试使用平移手势进行滑块,并且它每 3 次至少错过 1 次手势。
滑动也是如此,我有一个游戏掉落的东西,不得不滑动将它们推回一点,但成功率只有五分之一!
有没有人在 Flash/AIR(三星 S2 上)上使用这些手势,你做到了吗?
谢谢!
Edualc
【问题讨论】:
标签:
performance
actionscript-3
flash
air
gesture
【解决方案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...