2012-12-28 135 views
0

我在AS3上开始,从一开始,我看到很多教程,但看起来我现在正在打墙。子菜单不起作用的菜单

我的项目:

  • 我有具有含三个按钮(btn_checkbtn_datebtn_com)子菜单(menu_seul)主菜单(menu)。
  • 点击后,应显示不同的文字。
    我把menu_seul三个不同的帧(作为1作为空的一个)。

有没有一种方法来简化它,因为我只有一个事件监听通话...
如果不是,为什么我的代码不能正常工作?

感谢您的帮助!

menu.addEventListener(MouseEvent.ROLL_OVER, menu_on, false, 0, true); 
menu.addEventListener(MouseEvent.ROLL_OUT, menu_out, false, 0, true); 

btn_com.addEventListener(MouseEvent.ROLL_OVER, btn_com_on, false, 0, true); 
btn_com.addEventListener(MouseEvent.ROLL_OUT, btn_com_out, false, 0, true); 
btn_date.addEventListener(MouseEvent.ROLL_OVER, btn_date_on, false, 0, true); 
btn_date.addEventListener(MouseEvent.ROLL_OUT, btn_date_out, false, 0, true); 
btn_check.addEventListener(MouseEvent.ROLL_OVER, btn_check_on, false, 0, true); 
btn_check.addEventListener(MouseEvent.ROLL_OUT, btn_check_out, false, 0, true); 

function menu_on(event:MouseEvent):void{ 
menu.gotoAndPlay(2); 
} 

function menu_out(event:MouseEvent):void{ 
menu.gotoAndPlay(25); 
} 

function btn_com_on(event:MouseEvent):void{ 
menu_seul.gotoAndPlay(2); 
} 

function btn_com_out(event:MouseEvent):void{ 
menu.gotoAndPlay(1); 
} 

function btn_date_on(event:MouseEvent):void{ 
menu_seul.gotoAndPlay(3); 
} 

function btn_date_out(event:MouseEvent):void{ 
menu.gotoAndPlay(1); 
} 

function btn_check_on(event:MouseEvent):void{ 
menu_seul.gotoAndPlay(4); 
} 

function btn_check_out(event:MouseEvent):void{ 
menu.gotoAndPlay(1); 
} 

再次感谢!

+0

我不认为目前的工作是因为你的on/out功能针对不同的事情。例如,btn日期目标menu_seul,但btn日期关闭目标只是菜单 – Chris

+0

出现的新问题! 现在我正在尝试使用一般的悬停功能......我会告诉你! – Eustache

回答

0

我解决了它。 其实,我的代码是不是真的错了,这现在是:

menu.addEventListener(MouseEvent.ROLL_OVER, menu_on, false, 0, true); 
menu.addEventListener(MouseEvent.ROLL_OUT, menu_out, false, 0, true); 

btn_com.addEventListener(MouseEvent.ROLL_OVER, btn_com_on, false, 0, true); 
btn_com.addEventListener(MouseEvent.ROLL_OUT, btn_com_out, false, 0, true); 
btn_date.addEventListener(MouseEvent.ROLL_OVER, btn_date_on, false, 0, true); 
btn_date.addEventListener(MouseEvent.ROLL_OUT, btn_date_out, false, 0, true); 
btn_check.addEventListener(MouseEvent.ROLL_OVER, btn_check_on, false, 0, true); 
btn_check.addEventListener(MouseEvent.ROLL_OUT, btn_check_out, false, 0, true); 

function menu_on(event:MouseEvent):void{ 
menu.gotoAndPlay(2); 
} 

function menu_out(event:MouseEvent):void{ 
menu.gotoAndPlay(25); 
} 

function btn_com_on(event:MouseEvent):void{ 
menu_seul.gotoAndPlay(2); 
} 

function btn_com_out(event:MouseEvent):void{ 
menu_seul.gotoAndPlay(1); 
} 

function btn_date_on(event:MouseEvent):void{ 
menu_seul.gotoAndPlay(3); 
} 

function btn_date_out(event:MouseEvent):void{ 
menu_seul.gotoAndPlay(1); 
} 

function btn_check_on(event:MouseEvent):void{ 
menu_seul.gotoAndPlay(4); 
} 

function btn_check_out(event:MouseEvent):void{ 
menu_seul.gotoAndPlay(1); 
} 

这只是我的对象,我刚给他们不同的对象,发生和AS出口的名称之间的名字!所以,Flash对我说他们不是恒定的(Class)!

再次感谢您。

1

试试这个:

创建一个函数添加功能的按钮动作:

function addAction(target:*, event:String, action:Function, params:Array) { 
    target.addEventListener(event, function (event:Event) { action(params); }); 
} 

然后,添加动作的每个事件的每个按钮:

addAction(menu, MouseEvent.ROLL_OVER, menu.gotoAndPlay, [2]); 
addAction(menu, MouseEvent.ROLL_OUT, menu.gotoAndPlay, [25]); 
addAction(btn_com, MouseEvent.ROLL_OVER, menu_seul.gotoAndPlay, [2]); 
addAction(btn_com, MouseEvent.ROLL_OUT, menu.gotoAndPlay, [1]); 
... 

如果你什么,你可以创建一个阵列来注册所有按钮及其动作:

var buttons:Array = [ 
    {button:menu, overAction:menu.gotoAndPlay, overActionParams:[2], outAction:menu.gotoAndPlay, outActionParams:[25]}, 
    {button:btn_com, overAction:menu_seul.gotoAndPlay, overActionParams:[2], outAction:menu.gotoAndPlay, outActionParams:[1]}, 
    {button:btn_date, overAction:menu_seul.gotoAndPlay, overActionParams:[3], outAction:menu.gotoAndPlay, outActionParams:[1]}, 
    {button:btn_check, overAction:menu_seul.gotoAndPlay, overActionParams:[4], outAction:menu.gotoAndPlay, outActionParams:[1]} 
]; 

for each (var item:Object in buttons) 
{ 
    addAction(item.button, MouseEvent.ROLL_OVER, item.overAction, item.overActionParams); 
    addAction(item.button, MouseEvent.ROLL_OUT, item.outAction, item.outActionParams); 
} 

就这些!

+0

我做的只是菜单,尝试,我只是得到'1046:没有找到类型或不是编译时常量:菜单。'对象的名称,出现名称和AS可导出名称都是菜单...我不知道该怎么告诉他......而且,当然这不是一个常量,因为它是一个在悬停时移动的影片剪辑。无论如何,非常感谢你的耐心和回答fenixkim!它肯定会帮助我忽略AS3 :) – Eustache