gpt4 book ai didi

actionscript-3 - 如何修复 Flash 中的触摸延迟?

转载 作者:行者123 更新时间:2023-12-04 04:24:55 26 4
gpt4 key购买 nike

我在使用 AS3 的 TouchEvent 处理多点触控时遇到了奇怪的行为。触摸在某些情况下会明显滞后,但 Flash 的帧速率不会受到影响。就好像触摸被缓冲了,事件直到触摸几秒后才被调度。

我在这里上传了一个演示:https://youtu.be/omkCDqljfio

我只设法在 Flash Player 的 ActiveX 版本中重现了这种触摸延迟,但我已经在 Windows 10 和 Windows 7 中重现了它。所以我这里有一个托管我的 AS3 测试套件的 C# 应用程序, 但如果在 Internet Explorer 中查看 swf 也可以观察到。

由于我的应用程序已经涉及在 WPF 窗口中托管 SWF,因此我一直在尝试创建一个解决方案,在该解决方案中,触摸在 C# 中接收,然后与 AS3 通信。它会完美地工作,但当触摸发生在 WindowsFormsHost 上时,我的 WPF 窗口似乎没有接收到触摸帧。所以我必须解决另一个问题。

FlashDevelop 项目:https://drive.google.com/file/d/0BxC2eCzurT9rd0gzSGc4TUdQLTQ/viewVisual Studio 解决方案:https://drive.google.com/file/d/0BxC2eCzurT9rUThmRHBKWHZmbzA/view

AS3 触摸事件:

        Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

stage.addEventListener(TouchEvent.TOUCH_BEGIN, stage_touchBegin);
stage.addEventListener(TouchEvent.TOUCH_MOVE, stage_touchMove);
stage.addEventListener(TouchEvent.TOUCH_END, stage_touchEnd);

创建导致延迟的显示对象,大概是因为触摸事件捕获阶段:

        for (var i:int = 0; i < 500; i++) 
{
Dotter.createBGDot(_bgLayer, _shapesOn ? Shape : Sprite);
}

...

    static public function createBGDot(bgLayer:Sprite, dotClass:Class):void 
{
var dot:* = new dotClass();
var color:Color = new Color();
color.brightness = Math.random();
dot.graphics.beginFill(color.color);
dot.graphics.drawCircle(0, 0, Math.random() * 400 + 40);
dot.x = Math.random() * bgLayer.stage.stageWidth;
dot.y = Math.random() * bgLayer.stage.stageHeight;
bgLayer.addChild(dot);
}

我知道这是一种不寻常的情况,但我很感激任何有关如何解决这些问题的建议。

最佳答案

既然我已经使用了 Adob​​e Scout,我认为这毕竟是一个渲染问题。帧速率仍然显示 30fps,因为处理时间勉强达到 30fps 标记。降低帧速率可以解决问题。

尽管如此,当帧速率几乎没有下降时,触摸事件会有如此长的延迟仍然很奇怪。

关于actionscript-3 - 如何修复 Flash 中的触摸延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44707906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com