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没有跟踪我的名字?
答案 0 :(得分:1)
在MouseEvent中,请记住target
属性是指最初调度事件的显示对象。如果你的按钮包含图形和诸如此类的东西,target
可能是指按钮的一个子显示对象 - 实际点击的最低级别的东西。
您可能想要使用e.currentTarget
。这指向当前正在接收事件的对象,因为它在显示列表中冒泡,该列表将是您放置侦听器的按钮对象。
如果你不清楚事件冒泡是如何起作用的,那就没有多大意义。例如,尝试this article。