我正在制作一款用户点击昆虫并试图获得高分的游戏。当用户点击一只昆虫时,昆虫会播放动画并在此代码中停留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秒钟。如果此人暂停游戏以便屏幕上没有昆虫,我该如何移除计时器?
答案 0 :(得分:1)
一些提示:
永远不要使用超时,它们会产生差,不可持续,难以调试的代码。请改用Timer。定时器提供了很好的小功能,如:重复次数,暂停,恢复和重置计时器。因此,您可以将计时器超时设置为2000毫秒,重复一次并设置事件监听器TimerEvent.TIMER_COMPLETE以移除昆虫等。您可以在暂停游戏时暂停计时器并在需要时恢复。
但是,如果您使用超时,请为其指定一个uint并使用clearTimeout()方法来停止它。
this.parent.removeChild(this);
之类的构造很难看。相反,派遣一个事件作为替代方案,让父母管理死亡的错误(从数组中删除,显示列表等)。
在每个错误实例中存储声音将占用比所需更多的内存。创建一个静态声音库类并从中调用play()方法。