使用 getTimer() 方法在动作脚本 2 中休眠
Sleeping in action script 2 using getTimer() method
如何使用 getTimer()
正确执行类似 sleep
的功能?我需要每 15 秒执行一次操作。下面的代码不起作用。我在 Linux.
上用 mtasc
编译器编译它
class Tuto
{
static var lastMsg = 0;
static var msgInt = 15000;
static function main(mc)
{
if(getTimer() > lastMsg + msgInt)
{
trace("something");
lastMsg = getTimer();
}
}
}
main
指令只会执行一次。您必须构建某种循环或依靠播放器发送的 tick 事件来连续执行您的代码。
基本选项是:
while (true) { doSomething() }
这将永远执行,但请记住 flashplayer 是单线程的,因此在运行时其他所有内容都将被冻结,UI 包括用户输入。这只是 "good" 如果你正在构建一些不需要与用户交互的重型处理工具。
setInterval(doSomething, 15000)
这会创建一个间隔,每 X 毫秒调用一次您的函数。这是最简单的选项,可能也是您正在寻找的选项。
addEventListener(Event.ENTER_FRAME, doSomething)
这为 Flash Player 的 ENTER_FRAME 事件注册了一个侦听器,每秒将调度 30 次(默认情况下)。在该函数中,您可以使用 getTimer()
检查当前时间并决定是否该执行您的逻辑。
如何使用 getTimer()
正确执行类似 sleep
的功能?我需要每 15 秒执行一次操作。下面的代码不起作用。我在 Linux.
mtasc
编译器编译它
class Tuto
{
static var lastMsg = 0;
static var msgInt = 15000;
static function main(mc)
{
if(getTimer() > lastMsg + msgInt)
{
trace("something");
lastMsg = getTimer();
}
}
}
main
指令只会执行一次。您必须构建某种循环或依靠播放器发送的 tick 事件来连续执行您的代码。
基本选项是:
while (true) { doSomething() }
这将永远执行,但请记住 flashplayer 是单线程的,因此在运行时其他所有内容都将被冻结,UI 包括用户输入。这只是 "good" 如果你正在构建一些不需要与用户交互的重型处理工具。
setInterval(doSomething, 15000)
这会创建一个间隔,每 X 毫秒调用一次您的函数。这是最简单的选项,可能也是您正在寻找的选项。
addEventListener(Event.ENTER_FRAME, doSomething)
这为 Flash Player 的 ENTER_FRAME 事件注册了一个侦听器,每秒将调度 30 次(默认情况下)。在该函数中,您可以使用 getTimer()
检查当前时间并决定是否该执行您的逻辑。