flash.utils.setTimeout()状态的文档:
不要使用此方法,请考虑 创建一个Timer对象,用 指定的间隔,使用1作为 repeatCount参数(设置 计时器只运行一次)。
有人知道这样做是否有(显着)优势吗?当你只需要延迟1次呼叫时,使用setTimeout会容易得多。
答案 0 :(得分:11)
setTimeout
实际上使用Timer
子类SetIntervalTimer
,这是一个内部类。您可以执行setTimeout(function ():void { throw "booom"; }, 1);
进行检查。你会在堆栈跟踪中看到它。
因此,我不能真正看到一个很大的劣势。唯一的区别是,您有2个匿名呼叫而不是一个。 OTOH,在性能危急的情况下,您不应该使用(除了一个内部计时器)以避免频繁实例化TimerEvent
个对象。
基本上,我认为这是一个品味问题。 Adobe决定,AS3事件系统是shizzle,所以他们推广它。
答案 1 :(得分:8)
<强>定时器:强>
尽可能提供更多控制权 注册更多事件监听器 收到活动而不是 单一的setTimeout
您可以控制开始时间和
重复的次数(不是很多
对setTimeout很有用,因为这个
必须只运行一次,然后运行一次
考虑到即时的延迟
它被称为
<强>的setTimeout:强>
更易于使用
编写更少的代码
可以轻松发送参数;
我更喜欢Timer类,但我看到程序员经常使用setTimeout。
此外,如果您正在使用补间库,则某些支持延迟调用
例如TweenMax TweenMax.delayedCall(2,myFunction,[“myParam”]);
对于所有那些说不推荐使用setTimeout的人来说,这是没有意义的。
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html#setTimeout%28%29
我相信你在这里找不到任何“弃用”关键字
答案 2 :(得分:2)
setTimeout在外部.as文件中运行良好。
在课堂上使用它:
import flash.utils.*;
import flash.events.TimerEvent;
答案 3 :(得分:0)
我的理解是在AS3中折旧了setTimeout。我在查找setTimeout代码的源代码时遇到了一些麻烦,但我也相信清除对Timer对象的任何引用比使用setTimeout更容易(如果我从AS2中正确记得的话)。
答案 4 :(得分:0)
如果有新的和更强大的方法来实现某些东西,通常会被弃用。
是的,setTimeout在某些情况下更容易设置,但在其他情况下更受限制。
我会使用Timer类,因为通常在弃用某些东西时,这意味着将来某个时候可能会删除支持,然后您的代码将无效。
答案 5 :(得分:0)
问题是,Timer对象完全不准确,并且受到帧速率波动的影响。阅读http://forums.adobe.com/message/892631。我使用Date
对象创建了自己的Timer(称为RealTimer),它更准确。我建议也这样做。
答案 6 :(得分:-2)
setTimeout在外部.as文件中不起作用。