0

私はAS3を始めています。非常に始めて、たくさんのチュートリアルを見ましたが、今は壁にぶつかっているようです。

私のプロジェクト:

  • 3つのボタン(、、および)を含むサブメニュー(menu)を持つメインメニュー( )があります。menu_seulbtn_checkbtn_datebtn_com
  • クリックすると、別のテキストが表示されます。
    私は3つの異なるフレームを入れましたmenu_seul(1は空のフレームとして)。

EventListenerを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);
}

再度、感謝します !

4

2 に答える 2

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);
}

それで全部です!!

于 2012-12-28T13:39:28.683 に答える
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エクスポート可能名前の間で異なる名前を付ける必要がありました。だから、フラッシュは私に彼らは一定ではないと言った(クラス)!

ありがとうございました。

于 2012-12-29T13:42:27.167 に答える