2010-02-02 16 views
2
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個級別的導航。目前,當鼠標的孩子設置爲「真」時,它不想記住所創建菜單項的名稱。as3 mouseChildren = true不包含所創建按鈕的名稱

它吐出'實例263'或任何數字時,我跟蹤它與我的onClick事件。

當mouseChildren設置爲'false'時,我的第三層導航停止工作。

這裏的目標是讓菜單項保留一個實例名稱,這樣我就可以回到它們併爲當前活動模塊設置活動狀態。

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怎麼不跟蹤我的機器名?

+0

當bButton被初始化時,你試過跟蹤anXML [l] .thirdMenu [k] .attribute(「id」)嗎? – 2010-02-02 17:15:05

+0

你能創建一個最小樣本案例嗎? – Killroy 2010-02-02 17:32:40

+0

@Richard Inglis我跟蹤過它,看來我確實得到了菜單第二級的實例名稱。但是,當我點擊第二層中的某個項目時,我剩下的是'instance263'或任何數字。 – DesignedByDave 2010-02-02 18:09:01

回答

1

在MouseEvent中,請記住target屬性指的是最初派發的顯示對象事件。如果你的按鈕包含圖形和任何東西,target可能指的是按鈕的子顯示對象之一 - 實際得到點擊的最低級別的東西。

您可能想用e.currentTarget代替。這指向當前正在接收事件的對象,因爲它會通過顯示列表(這將成爲放置偵聽器的按鈕對象)冒泡。

如果你不清楚事件冒泡是如何工作的,那麼這就沒有什麼意義了。例如,嘗試this article

相關問題