Как запустить анимацию из другого класса в Actionscript 3.0 - PullRequest
1 голос
/ 12 января 2012

Я новичок в ActionScript 3.0 и пытаюсь обойти объектно-ориентированное программирование.

Я разработал приложение, в котором на сцене присутствуют 3 кнопки и логотип.Я хочу, чтобы при нажатии кнопки логотип исчезал.Теперь я понимаю, что мне нужно манипулировать альфа-свойствами логотипа, но не уверен, как бы я запускал код после нажатия кнопки.У меня есть файл Main.as, загружающий свойства приложения.Таким образом, после запуска FLA-файла Main.as устанавливает кнопки и логотип.Теперь кнопки помещаются в держатель дисплея и запускаются из menuHolder.as, который, в свою очередь, получает дизайн кнопок из button.as - пока что со мной?

Чтобы сохранить мой код в чистоте, я отделил свой кодв свои файлы (дизайн кнопок в свой собственный файл .as, расположение кнопок меню в свой собственный файл .as, создание логотипа в свой собственный файл .as), так что файл Main.as просто действует какзагрузчик для размещения всего на месте на сцене.

Итак, мой вопрос заключается в том, что я хочу создать анимацию для логотипа (анимацию постепенного исчезновения), где код будет храниться, например, в animationFade.as,Затем, когда кнопка нажата, анимация воспроизводится и соответствующая страница перемещается на.

Вот мой код для настройки менюBottons.as:

package 
{
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.events.MouseEvent;
    import flash.text.TextFormat;

    public class menuButtons extends Sprite
    {
        private var aboutMeBtn:button;
        private var galleryBtn:button;
        private var contactMeBtn:button;

        public function menuButtons()
        {
            aboutMeBtn = new button();
            aboutMeBtn.y = 0;
            aboutMeBtn.label = "About Me";
            addChild(aboutMeBtn);
            aboutMeBtn.addEventListener(MouseEvent.CLICK, onButtonClick);

            galleryBtn = new button();
            galleryBtn.y = 75;
            galleryBtn.label = "Gallery";
            addChild(galleryBtn);
            galleryBtn.addEventListener(MouseEvent.CLICK, onButtonClick);

            contactMeBtn = new button();
            contactMeBtn.y = 150;
            contactMeBtn.label = "Contact Me";
            addChild(contactMeBtn);
            contactMeBtn.addEventListener(MouseEvent.CLICK, onButtonClick);
        }
        public function onButtonClick(event:MouseEvent):void
        {
            //code to initiate the animationFade.as file
        }

    }
}

именно это //код для инициирования файла animationFade.as, который я не могу понять.Это может быть что-то очень простое, но моя голова, кажется, кружится!

Надеюсь, я предоставил достаточно информации.Как я уже сказал, я только учусь в минуту и ​​пытаюсь расти медленно.

Спасибо

1 Ответ

0 голосов
/ 12 января 2012

Лучший способ сделать это - отправить событие из функции нажатия кнопки.Затем создайте прослушиватель в вашем файле Main.as, который обрабатывает событие и сообщает логотипу исчезнуть.Может быть что-то вроде:

Из menuButtons.as

public function onButtonClick(event:MouseEvent):void
{
    dispatchEvent(new Event("hide_logo", true));
}

Вы можете прочитать документацию Класс событий , чтобы узнать больше о параметрах.* From Main.as (после создания экземпляра menuButtons)

menuButtonsInstance.addEventListener("hide_logo", hideLogoHandler);

function hideLogoHandler(e:Event):void {
    // Fade out logo
    TweenLite.to(logo, 1, {alpha:0}); // requires TweenLite
}

В этом примере требуется TweenLite из Greensock .

На заметку, для лучшей практики имена ваших классов должны начинаться с заглавной буквы.Таким образом, класс «menuButtons» будет «MenuButtons».Затем имена экземпляров начинаются со строчной буквы.Облегчает чтение, если вы делаете что-то вроде:

var menuButtons:MenuButtons = new MenuButtons();

...