Actionscript 3 带MouseEvent的循环按钮

Actionscript 3 带MouseEvent的循环按钮,actionscript-3,Actionscript 3,目前我只追踪到了最后一个MC。如何跟踪正确的MC属性 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].@N

目前我只追踪到了最后一个MC。如何跟踪正确的MC属性

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].@NAME;

            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.parent.listText.text);
    }
私有函数levelsBG():void{

对于(变量i:Number=0;i,因为您没有改变它们的位置(
x
&
y
),每个mc将显示在前一个的顶部。由于所有movieclips的大小相同,而最后一个位于顶部,因此只有该mc将接收到
鼠标悬停
事件。使用类似于
mc.x=i*WIDTH;
的方法更改它们在循环中的位置。好吧,看起来您在这里做了一些扭曲的事情

看起来,由于没有在levelsBG函数中声明listText,它必须在类级别声明出来,并且在循环的每次迭代中都会覆盖对该对象的引用,因此最后唯一存在的是创建的最后一个对象

然后在事件处理程序中,向上遍历显示树,找到该引用所在的类,并跟踪该引用的文本,因此看起来它们都是相同的

如果您的目的是跟踪已命名为listText的任何给定textfield的“text”属性,则需要稍微改变。此代码段应该可以工作,但您可能希望重新了解类成员的工作方式和地址,而不是子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].@NAME;
                    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);
    }

}
私有函数levelsBG():void{

对于(var i:Number=0;ii)来说,这里确实有mc.x=width*i脚本,但似乎每个listText都使用listMC作为持有者,而不是单独的listMCAre所有文本字段都显示在不同的位置?是的。经过一些搜索和思考后,我正确的问题是如何使重复的按钮单独工作?