在AS3中同时启动多个计时器

时间:2012-02-02 19:24:36

标签: actionscript-3 timer parallel-processing

var LevelCode:Array = [10,20,30,40,50,60,70,80,...,990,1000];
var Piece0:Timer = new Timer(50, LevelCode[0]);
var Piece1:Timer = new Timer(50, LevelCode[1]);
...
var Piece98:Timer = new Timer(50, LevelCode[98]);
var Piece99:Timer = new Timer(50, LevelCode[99]);

我想同时启动Piece0计时器,Piece1计时器等。 我试过了Piece0+Piece1.start();,但它没有用。

你们能帮助我吗?

3 个答案:

答案 0 :(得分:5)

也许你不需要很多计时器,因为你使用相同的50毫秒计时器。 为什么不直接使用一个计时器并在addEventListener指定的函数中处理事件?

var myTimer:Timer = new Timer(50);
myTimer.addEventListener(TimerEvent.TIMER, timerElapsed);
myTimer.start();

function timerElapsed(event:TimerEvent):void 
{
    //handle your levels here
}

答案 1 :(得分:3)

运行

Piece0.start();
Piece1.start();

将在足够接近他们可以解决的门槛的同时启动它们,因此它们将实际上是同一时间。启动计时器不是一个资源密集型过程。

答案 2 :(得分:0)

你不能像这样同时触发定时器触发。
这是一个非常糟糕的实现,您需要考虑重新设计 ActionScript没有线程,因此是异步的。
因此,没有两个计时器事件会同时发生。
它将永远是一个接一个。
你应该遵循vulkanino所做的建议并将所有内容整合到一个电话中。
此外,还有100多个计时器事件是非常多的,您是否可以确定所有100个计时器事件将在您给它们运行的​​50毫秒内处理?
如果不是,你冒一些“重叠问题”的风险全部取决于你在回调函数中所做的代码。