【问题标题】: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

【问题讨论】:

  • 您是否在三星 SII 上运行过其他任何东西来进行比较?这是一个good benchmark from Starling,您应该运行它来查看 Flash 的 sw 渲染是否缓慢或硬件本身。

标签: 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...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-25
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多