如何将函数应用于数组中的每个影片剪辑?

时间:2012-01-03 19:09:45

标签: arrays actionscript-3 movieclip

一开始我的舞台是空的,我有一个空数组和一些全局变量,我的库中有两个影片剪辑:一个是触发器,第二个是放置在舞台上的影片剪辑激活触发器(如果需要,可以使用testdummy)。

var dummies:Array = [];
var i:int = 300;
var j:int = 500;
var k:int = 0;

然后我在舞台上放置一个触发器实例

var testaddbutton:AdditionButton = new AdditionButton();
addChild(testaddbutton);
testaddbutton.x = i;
testaddbutton.y = i;

然后我描述了触发器影片剪辑的行为。单击它时,会在舞台上放置一个新的虚拟剪辑实例,插入到数组中,最后为创建的实例中的某些动态文本字段分配特定值(不是真正的点)

testaddbutton.addEventListener(MouseEvent.CLICK, placedummy);

function placedummy(evt:MouseEvent):void {
    var dummy:Dummy = new Dummy();
    addChild(dummy);
    dummies.push(dummy);
    dummies[k].x=i + l*100;
    dummies[k].y=j;
    k++;
    dummy.dummyindex.text = k.toString();
}

但后来我遇到了一个问题。我希望假人在点击时执行一个功能。当我尝试将eventListener添加到dummy ...

//dummy.addEventListener(MouseEvent.CLICK, showlifesigns);
//function showlifesigns(evt:MouseEvent):void {
//    trace ("pew");
//}

...我得到一个明显的错误:场景1,图层'动作',第1帧,第66行1120:未定义属性虚拟的访问。因为假人是在一个功能中创建的。我对'dummies'数组中的项目没有任何问题。

虽然虚拟对象是由相同的模式创建的,但存储在其中的数据是创建应用程序的重点。

所以问题是:如何将一个函数应用于每个虚拟对象,这些虚拟对象是在点击时执行的,只影响一个虚拟对象?

提前致谢

1 个答案:

答案 0 :(得分:1)

只需在addEventListener仍然是有效参考时调用dummy - 在用于创建每个dummy项目的同一函数中:

function placedummy(evt:MouseEvent):void { 
    var dummy:Dummy = new Dummy(); 
    addChild(dummy); 

    // Add the event listener right here!
    dummy.addEventListener(MouseEvent.CLICK, showlifesigns); 

    dummies.push(dummy); 
    dummies[k].x=i + l*100; 
    dummies[k].y=j; 
    k++; 
    dummy.dummyindex.text = k.toString(); 
}