47. Preloader Part3. Отображение ActionScript прелоадера впроекте FlashBuilder

В предыдущей статье мы научились как можно отображать прелоадер главной флешки в проекте написанном в редакторе Adobe Flash IDE. Если вы пишите проект в редакторе FlashBuilder, FlashDevelop или в любом другом редакторе, то метод рассмотренный в предыдущей статье вам не подойдет. Давайте разберем как можно показать прелоадер, если ваша главная флешка получилась большой по размеру файла.

Допустим у нас есть главный класс приложения, который называется MainApp.as, и выглядит он так:

Что бы указать компилятору что нам необходимо показать прелодер, надо перед строкой:

вставить строку:

, где MyPreloader это класс который будет отображать прелодер приложения. Если ваш класс прелодера лежит в пакете, то
ссылку надо указывать вместе с полным названием пакета:

Вот как в итоге должен выглядеть ваш главный класс MainApp.as:

Имейте ввиду что в конструкторе класса MainApp надо обязательно слушать событие добавления на stage, т.к. если вы используете прелодер, то в ваш экземпляр класса MainApp не будет иметь stage пока он не будет добавлен с помощью метода addChild в классе MyPreloader.

Давайте теперь посмотрим как должен выглядеть класс MyPreloader:

В этом классе так же желательно в конструкторе проверять наличие stage (строки 17-21). Как только убедились что stage у нас есть, проверяем может быть флешка уже загружена (строка 34). Если флешка уже загружена, то вызываем метод complete(строка 37).
Если флешка не загружена, то начинаем слушать событие прогресса загрузки и событие окончания загрузки (строки 39-42). Как только сработало событие окончания загрузки, вызываем метод complete. Метод complete пожалуй самый интересный в этом коде. Во первых надо сообщить вашему прелодеру(классу MypPreloader) что надо перейти на следующий кадр (вы ведь не забыли унаследовать класс MypPreloader от класса MovieClip? как у меня в строке 11). Перейти на следующий кадр можно с помощью метода this.nextFrame();. Далее мы с помощью метода getDefinitionByName получаем ссылку на ваш главный класс(строка 70). Имейте ввиду что в этой строке вы не создаете ваш объект, а только получаете ссылку на класс! Далее создаем объект класса с помощью оператора new mainClass. В строке 74 мы используем свойство this.parent что бы добавить наш объект main туда, де раньше лежал наш прелодер. Ну и удаляем прелодер из списка отображения с помощью метода removeChild.

Здесь важно понять, если вы напишите такой код:

, то ваш главный класс будет загружать вместе с классом MyPreloader, т.е. класс MyPreloader не будет работать до тех пор пока не загрузит ваш основной класс приложения MainApp, в итоге теряется весь смысл прелодера. Метод getDefinitionByName позволяет получить ссылку на класс MainApp неявным образом, так что бы этот класс не загружался вместе с классом прелодера.

Скачать исходники можно здесь.

Задание #1
Сделайте так что бы в классе MyPreloader отображался компонент показывающий процесс загрузки. В качестве компонента создайте класс PreloaderView.as, у которого есть метод Update(loaded:Number, total:Number). В этом методе необходимо показать процент загрузки. Схожий компонент мы создавали в статье Preloader Part1.Отображения прогресса загрузки.

Если у вас что то не получилось или вы хотите получить оценку сделанному, прикладывайте в комментариях или отправляйте мне на почту архив с вашим проектом. Отправить письмо можно в разделе Контакты

Да прeбудет с вами Flash.
Serious Sam
Эту статью прочитали 2204 раз

Возникли вопросы по статье? Не стесняйтесь спрашивать в комментариях или любым другим способом на странице Контакты .

Присоединяйтесь к нам в социальных сетях: ВКонтакте , Twitter и Facebook
Понравилась статья? Буду благодарен если вы поделитесь ссылкой с друзьями:


Комментарии ВКонтакте:




Комментарии Facebook:




Комментарии WordPress:


    1. Serious Sam Автор записи

      Проверьте правильность пути до файла. Попробуйте использовать другое изображение, возможно файл поврежден.