Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何阻止定时事件的发生?_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 如何阻止定时事件的发生?

Actionscript 3 如何阻止定时事件的发生?,actionscript-3,flash,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(MouseEve

我正在制作一个游戏,用户点击昆虫并试图获得高分。当用户单击一只昆虫时,该昆虫将播放动画并在其所在位置停留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秒钟。当玩家暂停游戏,使屏幕上没有昆虫时,如何移除计时器?

一些提示:

  • 永远不要使用超时,它们将产生糟糕的、不可持续的、难以调试的代码。改用定时器。计时器提供了一些不错的小功能,比如:重复时间、暂停、恢复和重置计时器。因此,您可以将计时器超时设置为2000ms,重复一次并设置事件侦听器TimerEvent.TIMER\u COMPLETE以移除昆虫等。您可以在暂停游戏时暂停计时器,并在需要时继续

  • 但是,如果确实使用超时,请为其分配uint并使用clearTimeout()方法停止它

  • 构造,例如
    this.parent.removeChild(this)很难看。相反,调度一个事件作为替代,并让父级管理死bug(从数组、显示列表等中删除)

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