使用 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() 检查当前时间并决定是否该执行您的逻辑。