我正在尝试将同一个动画片段的多个副本一次添加到舞台
我有一个循环填充数组并生成影片剪辑到舞台
和要添加的循环为每个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);
}
答案 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。一旦你的程序变大,它将为你节省令人困惑的时间。希望这可以帮助! :)