Ну, похоже, что вы здесь делаете что-то вроде этого.
Похоже, что из-за того, что listText не объявлен в функции levelsBG, он должен быть объявлен на уровне класса, и вы переписываете ссылку на этот объект на каждой итерации через ваш цикл, так что единственное, что существует в конце, является самым последним созданным объектом.
Затем в вашем обработчике событий вы перемещаете дерево отображения в класс, в котором находится эта одна ссылка, и отслеживая текст этого, поэтому внешний вид заключается в том, что они все одинаковы.
Если вы намерены проследить свойство «text» для любого заданного текстового поля, которое вы назвали listText, вам нужно будет по нему немного по-другому. Этот фрагмент должен работать, но вы можете пересмотреть свое понимание того, как члены класса работают и могут быть рассмотрены, в отличие от дочерних DisplayObjects?
private function levelsBG():void {
for (var i:Number=0; i<myXML.children().length(); i++) {
listText=new TextField ;
listMC=new MovieClip ;
listText.text=myXML.MEMBER[i][email protected];
listText.name = "listText";
listMC.buttonMode=true;
listMC.mouseChildren=false;
listMC.addChild(listText);
addChild(listMC);
listMC.addEventListener(MouseEvent.MOUSE_OVER,listOver);
}
}
private function listOver(e:MouseEvent):void {
trace(e.target.getChildByName("listText").text);
}
}
я сделал иметь mc.x = ширина * я вроде сценария, но кажется, что каждый listText использует listMC в качестве держателя вместо отдельного listMC – Hwang
ли все текстовые поля отображаются в разных местах? – Amarghosh
yup. после некоторых поисков и исправлений мой правильный вопрос будет заключаться в том, как сделать дублируемую кнопку функциональной отдельно? – Hwang