Archive for the 'AS1' Category
Опеределение собственного html-кода размещения
Небольшое извращение для ленивых:
This content requires Adobe Flash Player.
Если вам лень показывать необходимый код для размещения вашей флешки, то вы можете использовать приведенный код выше для того, чтобы флешка сама показывала собственный код размещения.
Корявенько, не очень кроссбраузерно (старые версии Оперы и IE, возможно, не будут с этим работать). Может не работать с путями, в которых отсутствует имя swf-файла.
txt — текстовое поле.
UPD: Похоже, во второй бете плеера сия фича больше не работает.
2 commentsЭкспорт классов во второй кадр и создание прелоадера во Flash CS3
Итак, в AS2 общая схема создания ролика all-in-one (с прелоадером) такова:
1) Все экспортируемые элементы не экспортируются в первый кадр (галочка Export in first frame снята);
2) Создается пустой мувик, содержащий два кадра. В первом только stop(); и больше ничего нет. Во втором кадре данного мувика размещаются все экспортируемые элементы (звуки, шрифты, мувиклипы). stop в первом кадре не позволяет данному мувику переходить на свой второй кадр, таким образом мы избегаем ненужной инициализации элементов, находящихся во втором кадре;
3) Данный мувик размещается во втором кадре проекта в любом месте сцены (все равно он в принципе невидим, т.к. в его первом кадре ничего нет);
4) В настроках AS2 проекта выставляется второй кадр для экспортирования классов;
5) В третьем (можно и во втором) кадре проекта можно пользоваться всеми классами и ресурсами.
Таким образом, первый кадр освобожден от различных ресурсов и мы можем написать там обычный AS1-код (увы, чистого AS2 в таком варианте добиться вы получиться) прелоадера.
Однако, применяя такую схему для AS3, вы можете столкнуться с тем, что клипы, у которых есть содержимое, создаются, но это содержимое отсутствует. Такая проблема возникает для различных спрайтов, мувиклипов, которые содержат, например, шейпы, нарисованные вручную в IDE. В случае же обычных классов, не являющихся визуальными (или происходит программная отрисовка) такой проблемы нет. Проблема, судя по всему, связана с тем, что компилятор, когда встречает обращение к подобным клипам до кадра экспорта (в данном случае — второго), переносит код такого класса в первый кадр, а вот его содержимое (шейпы, например) — «забывает».
Что нам нужно для того, чтобы решить данную проблему?
Отказаться от обращений к пользовательским классам в Document class.
Как?
Использовать метод loaderInfo.applicationDomain.getDefinition для создания экземпляра класса, который будет являться входной точкой нашего приложения. А уже в этом классе мы можем создавать все, что душе угодно. Но при этом нам нужно добиться, чтобы класс, являющийся входной точкой нашего приложения был экспортирован во второй кадр.
А как этого можно добиться, если мы не делаем прямых обращений к пользовательским классам в Document class?
Заставить компилятор экспортировать наш входной класс также просто: необходимо создать пустой мувиклип, с прописанным у него входным классом и поместить этот клип в тот самый двухкадровый мувиклип-экспортер, содержащий и все остальные ресурсы. Таким образом, компилятор создаст два объявления AS3-классов в нашем ролике. В первом объявлении будет содержаться только Document class (вы можете, конечно, создать какие-либо невизуальные классы, либо классы-спрайты, занимающиеся программной отрисовкой чего-либо, но таким образом вы основательно можете увеличить вес первого кадра), во втором (которое располагается во втором кадре) — все остальные классы, в т.ч. класс, являющийся входной точкой.
Представляю вашему вниманию простейший пример создания ролика в CS3 с экспортом классов во втором кадре и загрузчиком.
Некоторые пояснения к примеру:
Классы Box и Star — нарисованные вручную клипы.
Класс Program есть по сути Document class, он же входная точка.
Класс AnotherClass просто иллюстрирует работу экспорта во второй кадр всех нужных классов (не только физически размещенных во втором кадре).
Класс EmbedClip является сервисным классом-экспортером, во втором кадре которого мы будем размещать все наши нарисованные клипы. В этот кадр данный класс никогда не переходит, во избежание лишних инициализаций классов. Экземпляр данного класса находится во втором кадре нашего ролика.
Ну а ExportSecondFrameExample есть настоящий Document class, по совместительству выполняющий функцию загрузчика.
41 commentsПыль
«Смахиваем пыль». Ну типа того, эксперимент. Может кому пригодится…
UPD: Ну хорошо, хорошо, не пыль. Теперь похоже?
UPD: + аналог на AS3
Read more
Fog of War
Создаём «Дым войны»
Read more
Интересный эффект
This content requires Adobe Flash Player.
Случайно получилось.
з.Ы. StageManager будет позже.
No comments