如何阻止定时事件发生?

时间:2013-11-29 05:31:27

标签: actionscript-3 flash

我正在制作一款用户点击昆虫并试图获得高分的游戏。当用户点击一只昆虫时,昆虫会播放动画并在此代码中停留2秒钟:

import flash.events.MouseEvent;
import flash.display.MovieClip;
import fl.motion.Animator;
import flash.events.*;
play();
var mysound:squish = new squish(); 
this.addEventListener(MouseEvent.CLICK, kill);
this.dead = false;
function kill(e:MouseEvent):void 
{
    this.dead=true;
    mouseChildren=false
    mysound.play();
    gotoAndPlay(21);
    this.removeEventListener(MouseEvent.CLICK, kill);
    flash.utils.setTimeout(removeSelf,2000);

}

function removeSelf():void
{
    this.parent.removeChild(this);
}

当用户暂停游戏时,敌人会停止并且他们变得不可见。唯一的问题是当用户点击昆虫并按下暂停按钮时,昆虫会在那里停留2秒钟。如果此人暂停游戏以便屏幕上没有昆虫,我该如何移除计时器?

1 个答案:

答案 0 :(得分:1)

一些提示:

  • 永远不要使用超时,它们会产生差,不可持续,难以调试的代码。请改用Timer。定时器提供了很好的小功能,如:重复次数,暂停,恢复和重置计时器。因此,您可以将计时器超时设置为2000毫秒,重复一次并设置事件监听器TimerEvent.TIMER_COMPLETE以移除昆虫等。您可以在暂停游戏时暂停计时器并在需要时恢复。

  • 但是,如果您使用超时,请为其指定一个uint并使用clearTimeout()方法来停止它。

  • this.parent.removeChild(this);之类的构造很难看。相反,派遣一个事件作为替代方案,让父母管理死亡的错误(从数组中删除,显示列表等)。

  • 在每个错误实例中存储声音将占用比所需更多的内存。创建一个静态声音库类并从中调用play()方法。