2012-12-28 134 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