0

我怎样才能正确执行类似sleep功能的使用getTimer()?我需要每 15 秒执行一次操作。下面的代码不起作用。我mtasc在 Linux 上用编译器编译它。

class Tuto
{
static var lastMsg = 0;
static var msgInt = 15000;

  static function main(mc)
  {

    if(getTimer() > lastMsg + msgInt)
      {
         trace("something");
         lastMsg = getTimer();
      }

  }

}
4

1 回答 1

0

main指令将只执行一次。您必须构建某种循环或依赖播放器发送的滴答事件来连续执行您的代码。

基本选项是:

while (true) { doSomething() }

这将永远执行,但请记住,flashplayer 是单线程的,因此在运行时其他所有内容都将被冻结,包括 UI 和用户输入。如果您正在构建一些不需要与用户交互的繁重处理工具,这只是“好”。

setInterval(doSomething, 15000)

这会创建一个间隔,每隔 X 毫秒调用一次您的函数。这是最简单的选择,可能是您正在寻找的。

addEventListener(Event.ENTER_FRAME, doSomething)

这会为 Flash Player 的 ENTER_FRAME 事件注册一个侦听器,该事件将每秒调度 30 次(默认情况下)。在该函数中,您可以检查当前时间getTimer()并决定是否该执行您的逻辑。

于 2017-03-08T13:38:06.933 回答