2013-11-29 71 views
0

我正在制作一款游戏,用户点击昆虫并尝试获得高分。当用户点击一个昆虫,昆虫扮演动画,并在其现场停留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

一些提示:

  • 切勿使用超时,就会产生差,难以为继,难以调试代码。改用Timer。定时器提供了很好的小功能,例如:重复时间,暂停,恢复和重置定时器。所以你可以设置定时器的超时时间为2000ms,重复一次,并设置一个事件监听器TimerEvent.TIMER_COMPLETE来移除昆虫等。当你暂停游戏并在需要时恢复时,可以暂停计时器。

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

  • 建筑如this.parent.removeChild(this);是丑陋的。相反,派遣一个事件作为替代方案,并让父母来管理死亡错误(从数组中删除,显示列表等)。

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

相关问题