as3 mouseChildren = true不包含创建的按钮的名称

时间:2010-02-02 16:38:54

标签: flash actionscript-3 actionscript adobe

for(var l:int=0; l<anXML.length(); l++){

            aButton=new btn_secondTier();
            aLocation.addChild(aButton);
            //var aButtonDefaults:ButtonDefaults=new ButtonDefaults(aButton);               
            aButton.y=l*24;
            aButton.name=anXML[l].attribute("id");
            aButton.title_txt.text=anXML[l].theTitle;
            aButton.addEventListener(MouseEvent.ROLL_OVER,onDropOver);
            aButton.addEventListener(MouseEvent.ROLL_OUT,onDropOut);
            aButton.addEventListener(MouseEvent.CLICK,onClick);
            aButton.mouseChildren=true;

for(var k:int=0; k< anXML[l].thirdMenu.length(); k++){                  

                bButton=new btn_thirdTier();
                aButton.thirdContainer_mc.addChild(bButton);

                bButton.addEventListener(MouseEvent.ROLL_OVER,onMouseOver);
                bButton.addEventListener(MouseEvent.ROLL_OUT,onMouseOut);

                bButton.buttonMode = true;
                bButton.useHandCursor = true;       

                bButton.y=k*24;
                bButton.name=anXML[l].thirdMenu[k].attribute("id");

                //bButton.addEventListener(MouseEvent.CLICK,onClick);

                aButton.thirdContainer_mc.visible=false;

                bButton.title_txt.text=anXML[l].thirdMenu[k].theTitle;
                bButton.mouseChildren=false;


            }
            // PREVENTS THE THIRD NAV FROM THE PRESENTATION BUTTON FROM OVERLAPPING THE EDGE OF THE SCREEN
            if(aLocation==main.mainNav_mc.btn_2.secondaryContainer_mc){
                aButton.thirdContainer_mc.x=201;
            }

            // FRAME AROUND TERTIARY BUTTONS
            aButton.thirdContainer_mc.thirdNavBG_mc.height=(aButton.thirdContainer_mc.height);
            var thirdBGHeight:Number=(aButton.thirdContainer_mc.thirdNavBG_mc.height)+2;
            aButton.thirdContainer_mc.thirdNavBG_mc.height=thirdBGHeight;
            aButton.thirdContainer_mc.thirdNavBG_mc.width=202;
            aButton.thirdContainer_mc.thirdNavBG_mc.x=-1;
            aButton.thirdContainer_mc.thirdNavBG_mc.y=-1;

        }

目前正在构建一个动态菜单系统,具有3个级别的导航。目前,当鼠标子项设置为“true”时,它不想记住创建的菜单项的名称。

它吐出来,'instance263'或者当我用onClick事件追踪它时的数字。

当mouseChildren设置为'false'时,我的第三层导航将停止工作。

此处的目标是让菜单项保留实例名称,以便我可以与它们关联并为当前活动模块设置活动状态。

更新:

这是问题出现的地方

private function onClick(e:MouseEvent):void{
            var myString=e.target.name;
            var aList:Array = myString.split("_");
            trace(myString+" gfgfgfg "+argh[0].name);

            main.video_controller.nsStream.pause();
            main.video_controller.nsStream.close();
            main.btn_continue.visible=true;             
            main.btn_previous.visible=true;

            if(e.target.name==xmlData.menu[aList[0]].secondMenu[aList[1]].thirdMenu[aList[2]].attribute("id")){

            main.removeActivity();
            loadToolBox(xmlData.menu[aList[0]].secondMenu[aList[1]].thirdMenu[aList[2]]);                   
            main.loadModule(xmlData.menu[aList[0]].secondMenu[aList[1]].thirdMenu[aList[2]]);
            menu1ID=aList[0];
            menu2ID=aList[1];
            menu3ID=aList[2];

/////////////////////////////////////////////// ////////////////////////////////////////////////// //////////////////////////////////////////////////                 }             }

这是给我带来麻烦的痕迹。

trace(myString+" gfgfgfg "+argh[0].name);

myString正在跟踪(instance263)或其他任何内容。

那么为什么e.target没有跟踪我的名字?

1 个答案:

答案 0 :(得分:1)

在MouseEvent中,请记住target属性是指最初调度事件的显示对象。如果你的按钮包含图形和诸如此类的东西,target可能是指按钮的一个子显示对象 - 实际点击的最低级别的东西。

您可能想要使用e.currentTarget。这指向当前正在接收事件的对象,因为它在显示列表中冒泡,该列表将是您放置侦听器的按钮对象。

如果你不清楚事件冒泡是如何起作用的,那就没有多大意义。例如,尝试this article