代码之家  ›  专栏  ›  技术社区  ›  Christophe Herreman

定时器与设置超时

  •  10
  • Christophe Herreman  · 技术社区  · 15 年前

    flash.utils.settimeout()状态的文档:

    不要使用这种方法,而是考虑 创建计时器对象,使用 指定的间隔,使用1作为 repeatcount参数(设置 计时器只运行一次)。

    有人知道这样做是否有(重要)优势吗?当您只需要延迟一个呼叫时,使用setTimeout会容易得多。

    7 回复  |  直到 15 年前
        1
  •  11
  •   Bijoy Thangaraj    12 年前

    setTimeout 实际使用 Timer 子类 SetIntervalTimer ,这是一个内部类。你可以通过做来检查 setTimeout(function ():void { throw "booom"; }, 1); . 您将在堆栈跟踪中看到它。

    因此,我不能真正看到一个很大的缺点。唯一的区别是,你有两个匿名电话而不是一个。但是,在性能关键的情况下,您不应该使用任何一个(除了一个内部计时器)来避免频繁的实例化 TimerEvent 物体。

    基本上,我认为这是一个品味问题。Adobe决定,AS3事件系统是个垃圾,所以他们推广它。

        2
  •  8
  •   Oliver    15 年前

    Timer:

    • 给你更多的控制权 向注册更多事件侦听器 接收事件而不是 单台,带设定时间

    • 你可以控制开始时间和
      重复次数(不太多 对于设置超时很有用,如下所示
      只需运行一次,然后
      考虑到即时时间的延迟 它被称为)

    • 写更多的行,如果你 需要与参数区分 (此的自定义事件类)
    • 事件侦听器的使用
      AS3标准惯例。
    • 清扫外观

    设置超时:

    • 使用方便

    • 少写代码

    • 参数发送方便;

    我更喜欢Timer类,但我见过SetTimeout经常被程序员使用。

    另外,如果您正在使用tweening库,一些支持延迟调用

    例如Tweenmax tweenmax.delayedcall(2,myfunction,[“myparam”]);

    对于那些说setTimeout被否决的人来说,这是没有意义的。

    http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html#setTimeout%28%29

    我相信在setTimeout这里你看不到任何“deprected”关键字

        3
  •  2
  •   kleopatra Aji kattacherry    12 年前

    setTimeout在外部.as文件中工作得很好。

    只需在课堂上使用:

    import flash.utils.*;
    import flash.events.TimerEvent;
    
        4
  •  0
  •   quoo    15 年前

    据我所知,设定时间在AS3中被折旧。我在查找setTimeout代码的源代码时遇到了一些困难,但我也相信清除对计时器对象的任何引用比使用setTimeout(如果我从as2中正确地记得的话)更容易。

        5
  •  0
  •   Martin Konecny    15 年前

    通常情况下,如果有新的、更强大的方法来实现某件事情,就会被弃用。

    是的,在某些情况下设置超时要容易得多,但在其他情况下设置超时要有限得多。

    我将使用timer类,因为通常当某个东西被否决时,它意味着将来某个时候可能会删除对它的支持,然后您的代码将无法工作。

        6
  •  0
  •   Robusto    15 年前

    问题是,计时器对象一点也不准确,并且会受到帧速率波动的影响。读 http://forums.adobe.com/message/892631 . 我用 Date 对象和它更准确。我建议你也这么做。

        7
  •  -2
  •   Cristi Băluță    15 年前

    SetTimeout在外部.as文件中不工作。

    推荐文章