Использовать addEventListener динамически? - PullRequest
1 голос
/ 08 января 2010

Я создал навигационную панель во флэш-памяти с 5 различными видеороликами, которые я использую в качестве кнопок Каждый мувиклип (кнопка) имеет другое имя экземпляра. Есть ли способ использовать addeventlistener, чтобы мне не пришлось делать что-то вроде этого:

//for button1
 button1.buttonMode = true;// Show the hand cursor
button1.addEventListener(MouseEvent.ROLL_OVER, button1_over);
button1.addEventListener(MouseEvent.ROLL_OUT, button1_out);
button1.addEventListener(MouseEvent.CLICK, button1_click);

function button1_over(e:MouseEvent):void
{
    e.currentTarget.gotoAndPlay("over");
}

function button1_out(e:MouseEvent):void
{
    e.currentTarget.gotoAndPlay("out");
}

function button1_click(e:MouseEvent):void
{
    var request:URLRequest = new URLRequest("http://website.com");
    navigateToURL(request);
}
//for button2
button2.buttonMode = true;// Show the hand cursor
    button2.addEventListener(MouseEvent.ROLL_OVER, button2_over);
    button2.addEventListener(MouseEvent.ROLL_OUT, button2_out);
    button2.addEventListener(MouseEvent.CLICK, button2_click);

    function button2_over(e:MouseEvent):void
    {
        e.currentTarget.gotoAndPlay("over");
    }

    function button2_out(e:MouseEvent):void
    {
        e.currentTarget.gotoAndPlay("out");
    }

    function button2_click(e:MouseEvent):void
    {
        var request:URLRequest = new URLRequest("http://website.com");
        navigateToURL(request);
    }

... и так далее для всех пяти кнопок?

1 Ответ

5 голосов
/ 08 января 2010
function buttonOver( e:MouseEvent ):void {
  e.currentTarget.gotoAndPlay('over');
}
... etc

for each( var b:MovieClip in [button1,button2,button3,button4,button5] ) {
  b.addEventListener( MouseEvent.ROLL_OVER, buttonOver );
  b.addEventListener( MouseEvent.ROLL_OUT, buttonOut );
  b.addEventListener( MouseEvent.CLICK, buttonClick );
}

Вы можете еще больше улучшить его, выбрав тип события внутри функции и просто получив один:

function buttonHandler( e:MouseEvent ):void {
  // see the docs for MouseEvent and figure
  // out what string to pass to goToAndPlay
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...