AS2到AS3的时间功能

时间:2009-10-25 21:41:12

标签: flash class actionscript

我习惯在AS2代码上执行此操作。

this.pause3Seconds = function () {
        trace(_global.something(_root.somthing));
        clearInterval(myInt);
    };
    var myInt = setInterval(this, "pause3Seconds", 3000);

现在尝试将其解析为class.as文件,会出现所有类型的迁移错误和警告。

所以我在这里。 任何人都知道如何在一个类中做到这一点。作为AS3方式文件?

我不按时间表工作。 (帧)

约翰

3 个答案:

答案 0 :(得分:2)

您的AS2代码实际上并未暂停播放器({3}}将在此三秒内执行enterFrame侦听器和鼠标/键侦听器。它只是确保方法pause3Seconds将在三秒后调用。您可以使用Timer类在AS3中实现类似的功能。

var timer:Timer = new Timer(3000, 1);
timer.addEventListener(TimerEvent.TIMER, onTimerTick);
function onTimerTick(e:TimerEvent = null):void
{
    if(e)
    {
        trace("3 seconds completed");
        Timer(e.target).removeEventListener(TimerEvent.TIMER, onTimerTick);
    }
}

答案 1 :(得分:0)

var startTime = getTimer();
while (true) 
{
   if (getTimer() - startTime >= sleepTime) 
   {
   //do something
   break;
   }
}

http://www.kirupa.com/forum/showthread.php?t=232714 - secocular's post

答案 2 :(得分:0)

@Allan:这将使你的flash代码抛出运行时错误(脚本花费的时间超过预期)。在函数内部睡觉总是一个坏主意。

@jon:这有点像'你的方式'解决方案:)

import flash.utils.*;//for setInterval and clearInterval
public class YourClass {
private var myInt:uint;
public function YourClass():void { //YourClass is the name of your class
myInt = setInterval(pause3Seconds, 3000);
}
public function pause3Seconds() {
trace("Whatever you want after 3 seconds");
clearInterval(myInt);
}
}

-bhups