Кнопки As3 становятся отключенными - PullRequest
0 голосов
/ 16 февраля 2011

Хорошо, я разбил свой пример, чтобы избежать усложнения вещей.

У меня есть 2 кнопки в первом кадре, размещенные в видеоклипе «Контейнер».MOUSE_OVER / OUT предназначен для анимации, которая находится внутри мувиклипа кнопок и останавливается с помощью stop ();(внутри кнопки мувиклипа).

stop();


container.addEventListener(MouseEvent.CLICK, clickCommand);

function clickCommand(event:MouseEvent):void{
    if(event.target.name == "button1"){
        container.alpha = 0;
        gotoAndStop(15);
    }
        if(event.target.name == "button2"){
        container.alpha = 0;
        gotoAndStop(16);
    }
}


container.addEventListener(MouseEvent.MOUSE_OVER, rollOverCommand);

function rollOverCommand(event:MouseEvent):void{
    if(event.target.name == "button1"){
        event.target.gotoAndPlay(2);

}
    if(event.target.name == "button2"){
        event.target.gotoAndPlay(2);
    }

}



container.addEventListener(MouseEvent.MOUSE_OUT, rollOutCommand);

function rollOutCommand(event:MouseEvent):void{
    if(event.target.name == "button1"){
        event.target.gotoAndPlay(11);
    }
    if(event.target.name == "button2"){
        event.target.gotoAndPlay(11);
    }
}

Как вы можете видеть, я хочу, чтобы контейнер перешел в альфа-0, когда пользователь нажимает кнопку eigher, а затем переход на временной шкале к соответствующему кадру, в зависимости от того, пользовательвыбрана кнопка 1 (кадр 15) или кнопка 2 (кадр 16).

Это работает просто отлично.Проблема в том, что у меня есть новое меню на этих кадрах, которое также размещено в мувиклипе под названием container2 - и их MOUSEOVER / OUT / CLICK внезапно не работают, когда я использую этот подход.Вот их код:

stop();

    container2.addEventListener(MouseEvent.CLICK, clickCommand2);

function clickCommand2(event:MouseEvent):void
{
    if (event.target.parent.name == "main1")
    {
        event.target.root.gotoAndPlay(13);
        trace(event.target.parent.name);
    }
    else if (event.target.parent.name == "main2")
    {
        trace(event.target.parent.name);
        event.target.root.gotoAndStop(14);
    }
}


container2.addEventListener(MouseEvent.MOUSE_OVER, rollOverCommand2);

function rollOverCommand2(event:MouseEvent):void
{
    if (event.target.name == "main1","main2")
    {
        event.target.parent.gotoAndPlay(16);

    }
}



container2.addEventListener(MouseEvent.MOUSE_OUT, rollOutCommand2);

function rollOutCommand2(event:MouseEvent):void
{
    if (event.target.name == "main1","main2")
    {

        event.target.parent.gotoAndPlay(21);

    }
} 

Таким образом, я могу добраться до нужного кадра, но новые кнопки (main1, main2), которые я разместил, отключены.

Это потому, что я не убрал слушателей?Я поступаю неправильно?

Заранее спасибо - это очень ценится.

1 Ответ

1 голос
/ 16 февраля 2011

Я предполагаю, что ваш код был добавлен в actions, а не добавлен в отдельный файл AS.

Несколько предложений. Если ваши кнопки охватывают всю временную шкалу и не перемещаются, убедитесь, что они находятся на своем собственном слое, без новых ключевых кадров, таким образом, сохраняется тот же экземпляр и слушатели событий должны работать очень хорошо.

Если ваши кнопки - это разные экземпляры, вам нужно перепривязать прослушиватели событий на ключевом кадре, к которому вы переходите.

По возможности избегайте использования actions для управления кодом ActionScript. размещение вашего кода во внешнем файле AS может значительно уменьшить дублирование кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...