as3:如何从Array中访问MovieClip作为唯一的Object / MovieClip,它从Library中从相同的MovieClip加载

时间:2013-09-06 19:26:39

标签: arrays actionscript-3 loops movieclip

我正在尝试将同一个动画片段的多个副本一次添加到舞台

我有一个循环填充数组并生成影片剪辑到舞台

和要添加的循环为每个movieClip添加ClickListener

但我错过了分别访问每个MovieClip的神奇代码 通过点击将其从舞台中删除

var numOfClips:Number = 5;
var mcArray:Array = new Array();

for(var i=0; i<numOfClips; i++)
{
    var usd:mcUSD = new mcUSD();

//genrate random x , y position----------------------------
    var randY:Number = Math.floor(Math.random()*460) + 120;
    var randX:Number = Math.floor(Math.random()*350) + 60; 
    usd.x = randX;
    usd.y = randY;  
//---------------------------------------------------------
    mcArray.push(usd);
    addChild(usd);
}

for(var m:int = 0; m<mcArray.length; m++){
    usd.addEventListener(MouseEvent.CLICK, colectmoney);
}

function colectmoney(e:MouseEvent): void { 
     removeChild(usd);
}

1 个答案:

答案 0 :(得分:0)

试试这个:

import flash.events.MouseEvent;

var numOfClips:Number = 5;
var mcArray:Array = new Array();

for(var i=0; i<numOfClips; i++)
{
var usd:mcUSD = new mcUSD();

//genrate random x , y position----------------------------
var randY:Number = Math.floor(Math.random()*460) + 120;
var randX:Number = Math.floor(Math.random()*350) + 60; 
usd.x = randX;
usd.y = randY;  
//---------------------------------------------------------
mcArray.push(usd);
addChild(usd);
}

addEventListener(MouseEvent.CLICK, mouseClickHandler);

function mouseClickHandler(e:MouseEvent) : void {
removeChild(mcArray[mcArray.indexOf(e.target)]);
}

需要注意的重要事项:1)您不需要为每个mcUSD对象调用mouse.click事件侦听器。只召唤一次会更有效率。 2)removeChild(usd)将无法工作,因为你需要告诉AS3删除哪个mcUSD对象。 3)尽量保持功能命名一致 - 例如colectMoney而不是colectmoney。一旦你的程序变大,它将为你节省令人困惑的时间。希望这可以帮助! :)