Actionscript 3 从计时器中删除子对象

Actionscript 3 从计时器中删除子对象,actionscript-3,flash,timer,Actionscript 3,Flash,Timer,我有25个名为“无人机”的电影剪辑类对象,当我单击它时,2秒钟后我希望该对象消失。我还有25个叫倒计时的计时器。以下是我的工作: function clickHandler (event:MouseEvent):void{ event.currentTarget.hp--; if(event.currentTarget.hp <= 0) { for(var i:int = 0;i<25;i++) { if(event.currentTarget ==

我有25个名为“无人机”的电影剪辑类对象,当我单击它时,2秒钟后我希望该对象消失。我还有25个叫倒计时的计时器。以下是我的工作:

function clickHandler (event:MouseEvent):void{
event.currentTarget.hp--;

if(event.currentTarget.hp <= 0)
{
    for(var i:int = 0;i<25;i++)
    {
        if(event.currentTarget == _drone[i])
        {
            countdown[i].start(); //start timer

        }
    }
}
}
函数clickHandler(事件:MouseEvent):void{
event.currentTarget.hp--;

如果(event.currentTarget.hp变化最小,则设置一个阵列来跟踪无人机:

var arrayToRemove:Array = new Array();
然后在“单击处理程序”中,在其中存储要移除的无人机:

arrayToRemove.push(event.currentTarget);
在timerHandler中,只需删除数组的第一个元素:

removeChild(arrayToRemove.shift());

由于每个延迟都是相同的,因此事件和删除的顺序将被保留。尽管如此,使用上述示例概括代码并将所有无人机和计时器存储在一个数组中可能会更好,这样您就可以拥有任意数量的无人机。

只需进行最小的更改,即可设置一个数组来跟踪无人机:

var arrayToRemove:Array = new Array();
然后在“单击处理程序”中,在其中存储要移除的无人机:

arrayToRemove.push(event.currentTarget);
在timerHandler中,只需删除数组的第一个元素:

removeChild(arrayToRemove.shift());
由于每个延迟都是相同的,因此事件和删除的顺序将被保留。尽管如此,使用上述示例概括代码并将所有无人机和计时器存储在一个数组中可能会更好,这样您就可以拥有任意数量的无人机和计时器。

您可以使用。使用计时器作为键,使用movielcip作为值

import flash.utils.Dictionary;

var dict:Dictionary = new Dictionary();

function clickHandler (event:MouseEvent):void{
    event.currentTarget.hp--;

   if(event.currentTarget.hp <= 0)
   {
       for(var i:int = 0;i<25;i++)
       {
            if(event.currentTarget == _drone[i])
            {
                dict[countdown[i]] = _drone[i];//set the target mc here
                countdown[i].start(); //start timer
                break;
             }
        }
   }

}

function timerHandler(e:TimerEvent):void {

     var mc:MovieClip = dict[e.target] as MovieClip;//get the object been clicked

     if (mc && mc.parent) {
        mc.parent.removeChild(mc);//remove it
     }
 } 
导入flash.utils.Dictionary;
var dict:Dictionary=newdictionary();
函数clickHandler(事件:MouseEvent):void{
event.currentTarget.hp--;
如果(event.currentTarget.hp您可以使用。使用定时器作为键,使用movielcip作为值

import flash.utils.Dictionary;

var dict:Dictionary = new Dictionary();

function clickHandler (event:MouseEvent):void{
    event.currentTarget.hp--;

   if(event.currentTarget.hp <= 0)
   {
       for(var i:int = 0;i<25;i++)
       {
            if(event.currentTarget == _drone[i])
            {
                dict[countdown[i]] = _drone[i];//set the target mc here
                countdown[i].start(); //start timer
                break;
             }
        }
   }

}

function timerHandler(e:TimerEvent):void {

     var mc:MovieClip = dict[e.target] as MovieClip;//get the object been clicked

     if (mc && mc.parent) {
        mc.parent.removeChild(mc);//remove it
     }
 } 
导入flash.utils.Dictionary;
var dict:Dictionary=newdictionary();
函数clickHandler(事件:MouseEvent):void{
event.currentTarget.hp--;
如果(event.currentTarget.hp