as3 mouseChildren = true не содержит имя созданной кнопки - PullRequest
2 голосов
/ 02 февраля 2010
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, 3-й уровень навигации перестает работать.

Цель состоит в том, чтобы пункты меню сохранили имя экземпляра, чтобы я мог вернуться к ним и установить активные состояния для текущего активного модуля.

UPDATE:

Здесь возникает проблема

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 Ответ

1 голос
/ 03 февраля 2010

В MouseEvent помните, что свойство target относится к экранному объекту, который первоначально отправил событие. Если ваша кнопка содержит графику и еще много чего, target, вероятно, относится к одному из дочерних экранных объектов кнопки - объекту самого низкого уровня, который фактически был нажат.

Вы, вероятно, хотите использовать e.currentTarget вместо этого. Это указывает на объект, который в данный момент получает событие, когда он всплывает через список отображения, который будет объектом кнопки, куда вы помещаете слушателя.

Если вам непонятно, как работает всплытие событий, это не будет иметь особого смысла. Попробуйте эту статью , например.

...