1

我想做多线程!我想用播放/暂停/停止按钮制作一个计时器,当用户按下播放按钮时,计时器开始计数。我想做计数过程,而这个,另一个操作应该做,因为有了这个计时器,用户想要测量正在发生的某事,无论如何,场景中的其他地方,我想要某事,并且用户测量需要多长时间!!!我是 Flash 新手,但据我所知,解决方案是多线程!或者是否有任何计时器或类似的东西可以测量时间,而不会导致程序挂起!我正在使用 as2 ,但如果 as3 是唯一的方法,那很好!tnx

4

1 回答 1

2

Flash player 11.4 通过新的并发(actionscript workers)特性提供了多线程。在这里阅读:http: //blogs.adobe.com/flashplayer/2012/08/flash-player-11-4-and-air-3-4.html

Flash 11.3 及更低版本不提供多线程。您的问题虽然并不特别需要多线程。flash.utils.Timer 类和 flash.utils.setTimeout() 是异步的,不会挂起您的代码堆栈。

我建议在 adobe 文档上查看这些类。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/Timer.html http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils /package.html#setTimeout()

要在评论中解决您的问题:

var timer:Timer = new Timer(1000); //fire every second, make this number smaller to have it update faster
timer.addEventListener(TimerEvent.TIMER, updateLabel);

var timeStamp:int;
function startTimer():void {
    timeStamp = getTimer();
    timer.reset();
    timer.start();
}

function updateLabel(e:Event):void {
    var timePassedSoFar:int = getTimer() - timeStamp;
    //update your label to show how much time has passed (it's in milliseconds)
}

如果您只需要秒数,您也可以只使用 timer.currentCount 属性(而不是 getTimer()),它会告诉您计时器触发了多少次,在上面的示例中,它是每次触发一次所经过的秒数第二。

于 2012-08-03T17:09:56.093 回答