一开始我的舞台是空的,我有一个空数组和一些全局变量,我的库中有两个影片剪辑:一个是触发器,第二个是放置在舞台上的影片剪辑激活触发器(如果需要,可以使用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'数组中的项目没有任何问题。
虽然虚拟对象是由相同的模式创建的,但存储在其中的数据是创建应用程序的重点。
所以问题是:如何将一个函数应用于每个虚拟对象,这些虚拟对象是在点击时执行的,只影响一个虚拟对象?
提前致谢
答案 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();
}