为flash.utils.setTimeout该文档()状态:定时器VS的setTimeout
代替使用这种方法,可以考虑 创建一个Timer对象,与 指定的时间间隔,使用1作为 repeatCount参数(它将 定时器设置为只运行一次)。
有谁知道这样做是否有(显着的)优势?当您只需要延迟1次呼叫时,使用setTimeout就容易多了。
为flash.utils.setTimeout该文档()状态:定时器VS的setTimeout
代替使用这种方法,可以考虑 创建一个Timer对象,与 指定的时间间隔,使用1作为 repeatCount参数(它将 定时器设置为只运行一次)。
有谁知道这样做是否有(显着的)优势?当您只需要延迟1次呼叫时,使用setTimeout就容易多了。
setTimeout
实际上使用Timer
子类,SetIntervalTimer
,这是一个内部类。您可以通过做setTimeout(function():void { throw "booom"; }, 1);
来检查。你会在堆栈跟踪中看到它。
因此,我不能看到一个很大的缺点。唯一的区别是,你有两个匿名电话而不是一个。 OTOH,在性能严重的情况下,您不应该使用任何一种(除了一个内部计时器)以避免频繁实例化TimerEvent
对象。
基本上,我认为这是一个品味问题。 Adobe决定,AS3事件系统非常棒,所以他们会推广它。
我的理解是setTimeout在AS3中折旧。我在查找setTimeout代码的源代码时遇到了一些麻烦,但是我也相信清除对Timer对象的引用比使用setTimeout更容易(如果我从AS2中没记错的话)。
setTimeout在外部.as文件中无效。
通常情况下,如果有新的更强大的方法来实现某些东西,某些东西就会被弃用。
是的setTimeout在某些情况下更容易设置,但在其他情况下更受限制。
我会使用Timer类,因为通常当某些东西被弃用时,这意味着支持可能会在将来被删除,然后您的代码将无法工作。
通常是一个很好的推理,但不太可能发生在Flash Player中。 adobe真正关心向后兼容性和传统支持。在这种情况下,也可以在几行内重写该函数。 – back2dos 2010-04-21 15:33:58
@ back2dos,是的,你在Adobe的情况下是正确的,但为什么不遵循一般的良好做法? – 2010-04-21 15:36:40
除了Adobe的观点之外,除了setTimeout之外,还有什么比定时器更好的做法呢?我同意,'Timer'提供了更多的可能性,然后'setInterval'和'setTimer',但是再一次,AVM2字节码提供比ActionScript更多的可能性:D我认为'setTimeout'是一个有用的函数。如果它不在那里,我会自己写。对我来说,代码简洁是一种很好的做法,因为这样做会使代码变得易读易懂。所以虽然我一般都认同,但通常我们会认真对待弃用,在ActionScript 3的情况下,我经常会觉得这只是一个品味问题。 – back2dos 2010-04-22 10:47:15
问题是,Timer对象并不准确,并且会受到帧率波动的影响。阅读http://forums.adobe.com/message/892631。我使用Date
对象创建了自己的Timer(称为RealTimer),它更准确。我建议你也这样做。
定时器:
为您提供了更多的控制,你可以 注册多个事件监听器 接收事件,而不是一个 单一与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
我相信你无法看到周围的setTimeout这里任何“弃用”关键字
的setTimeout是在外部.as文件中工作得很好。
在类只需使用这样的:
import flash.utils.*;
import flash.events.TimerEvent;
喜。很高兴在这里看到你:)无论如何:你可以再详细一点吗? “外部”是什么意思? – back2dos 2010-04-21 15:17:00
通过外部.as文件我的意思是类。有没有人在这里使用as3没有类? PS:我们认识对方吗? – 2010-04-22 04:06:45
奇怪。无论使用IDE还是mxmlc编译,我都可以完美地工作。 PS:不是个人,而是来自haXe邮件列表。 :) – back2dos 2010-04-22 08:44:43