Actionscript 3 SWF文件的计时器在debug player中运行得比release player快(Adobe Animate,AS3)

Actionscript 3 SWF文件的计时器在debug player中运行得比release player快(Adobe Animate,AS3),actionscript-3,debugging,flash,timer,Actionscript 3,Debugging,Flash,Timer,我有一个交互式动画,由一个按钮和一些按顺序点亮的灯光组成。动画还有一个计时器,显示时间的流逝,以说明灯光转换之间的间隔,因此用户知道序列中每个转换之间经过了多少时间(从灯光“a”到灯光“b”花费了x个时间)。这个按钮控制速度 我使用AS3中的timer类实现了计时器: var MyTimer:Timer = new Timer(1); 这意味着计时器应该每毫秒触发一次 现在,我意识到这还远远不够精确,因为帧速率(24fps)和它必须在处理函数中运行代码这一事实。但我不是要一个精确的计时器,事实

我有一个交互式动画,由一个按钮和一些按顺序点亮的灯光组成。动画还有一个计时器,显示时间的流逝,以说明灯光转换之间的间隔,因此用户知道序列中每个转换之间经过了多少时间(从灯光“a”到灯光“b”花费了x个时间)。这个按钮控制速度

我使用AS3中的timer类实现了计时器:

var MyTimer:Timer = new Timer(1);
这意味着计时器应该每毫秒触发一次

现在,我意识到这还远远不够精确,因为帧速率(24fps)和它必须在处理函数中运行代码这一事实。但我不是要一个精确的计时器,事实上我确实需要它变慢,这样用户就可以看到两次转换之间的时间,如果你愿意的话,一个缩放/减速的计时器。当前时间显示在动态文本字段中

同样,在Adobe Animate中使用调试播放器时,计时器的运行速度大约为正常速度的1/10,大约需要10秒来显示一秒钟已经过去,顺便说一句,这对于我来说非常有用。但是,该动画将在PDF中使用,在这种情况下,将使用Flash的发布播放器;在发行版中,计时器的速度大约是原来的一半,大约是速度的1/20,大约需要20秒或更长的时间才能显示一秒钟已经过去

我不知道这是为什么。如何播放swf文件,使计时器在Flash Player的调试版本和发行版本中的行为相同

我尝试在发布设置以及所有硬件加速选项中取消勾选“允许调试”和勾选“忽略跟踪语句”(以及每个un/tick组合)

我还实现了一个FPS计数器,如用户“kglad”所建议的:

但是调试版本和发布版本都显示FPS在23-24之间。“kglad”在线程中给出了最后一个回复,因为“调试播放器比非调试播放器慢”。我不确定他这是什么意思,因为这似乎是我和该线程的OP遇到的相反问题,除非他/她是指在浏览器中使用播放器


TL;博士

如何让计时器在Flash player的调试版本和发布版本中表现相同


提前感谢您的建议。

根据SWF文件的帧速率或运行时环境(可用内存和其他因素),运行时可能会以稍微偏移的间隔发送事件。例如,如果将SWF文件设置为以每秒10帧(fps)的速度播放,即以100毫秒的间隔播放,但将计时器设置为以80毫秒的间隔触发事件,则事件将在接近100毫秒的间隔时调度。内存密集型脚本也可能会抵消事件。
另外:
不建议延迟低于20毫秒。计时器频率限制为每秒60帧,这意味着低于16.6毫秒的延迟会导致运行时问题。
我的建议:不要使用
Timer
use
ON\u输入\u FRAME
事件并计算经过的时间,如果您想显示秒在大约10秒后已经过去,为什么不将计时器间隔设置为10秒?简单地
新定时器(10000)@Pawel,因为灯光每几分之一秒转换一次:有时是四分之一秒,有时是半秒或一整秒;模式各不相同。