Flash-flash中setInterval计算时间是否准确?

WordPress 开发 WordPress 开发 主题:1098 回复:2322

Flash-flash中setInterval计算时间是否准确?

虐人心 发布于 2017-06-19 字数 115 浏览 877 回复 3

在flash中做秒表,我用的setinterval来递加毫秒。
运行起来时间不准确。这和什么有关系?用什么方式计时好呢?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(3

浮生未歇 2017-10-09 3 楼

flash中的所有定时器都不很准确。
定时器有一下几种方式:
1、setTimeout
2、setInterval
3、Timer
4、Enter_Frame

可以使用getTimer获取flash已运行的毫秒数,示例:

var timer:Timer = new Timer(1);
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();

var currentTimer:uint = getTimer();
function timerHandler(evt:TimerEvent):void {
trace("毫秒:", getTimer() - currentTimer);
}

想挽留 2017-09-21 2 楼

flash中最基础的是EnterFrame,其他的计时器都是基于这个来进行计算的。

一个EnterFrame的极限应该在1ms左右,也即是60帧。一个帧中会有大致两个阶段:执行代码和执行渲染,通常称其为弹性跑道模型。

如果执行的代码过多或者渲染时间过长,都会造成一帧的时间过长,那么这一帧的下一帧就会受到影响,甚至有可能直接跳过下一帧不执行。所以可能会产生误差。

可以用setInterval来递加毫秒,然后用getTimer()过一段时间做一次校正。

浮生未歇 2017-06-28 1 楼

计时器一般都是用 getTimer() 来做的,另外,计时器建议写成一个类,做成单例模式