Записки о Flash

Archive for the 'CS3' Category

Компиляция шрифтов в Adobe Flash CS4

Жил-был Flash. Хорошо жил. От 1 до 9-ой версии.
А потом воспаленный мозг разработчиков новой версии IDE решил, что нужно «поправить» работу со шрифтами в CS4. И поправили.

Теперь я не могу скомпилировать либу с одним и тем же шрифтом, но разными начертаниями, дабы использовать оные в html-тексте. Простейший код:

This content requires Adobe Flash Player.


Заставить его работать в CS4, не прибегая к метатегу Embed вы не сможете. А для использования Embed вам нужен Flex SDK, написать класс, влепить переменную, порадоваться в итоге новым трем классам и одному интерфейсу в swf-ке (рутовый, класс шрифта и флексовый FontAsset на пару с IFlexAsset). Я уже не говорю про безумно казуальное указание диапазонов символов.
Зато в CS4 можете налепить кучу шрифтов с разными именами (Myriad Pro Bold, Myriad Pro Italic и т. п.) и стилем начертания regular. Браво, Adobe!

24 comments

Видеопособие по созданию прелоадера во Flash CS3

Jarrod Medrano из Portent Interactive опубликовал в своем блоге видеопособие по созданию AS3-прелоадера во Flash CS3. Thanks, Jarrod! :-)

8 comments

Русский хелп

А тем времением, появился русский хелп по Flash CS3. Не весь, но впечатляет.

28 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

Обзор Adobe Flash CS3 Professional — Часть 2. Программистам.

Последняя часть моего обзора Adobe Flash CS3 Professional. На сей раз для программистов.
Read more

38 comments

Обзор Adobe Flash CS3 Professional — Часть 1. Дизайнерам.

Итак, как и было обещано в предыдущем обзоре Flash CS3, рассмотрим новый продукт детальнее (опять много трафика).
Read more

19 comments

Обзор Adobe Flash CS3 Professional — Часть 0. Введение.

Мой небольшой обзорчик Adobe Flash CS3 для Mac OS X (осторожно, скриншоты в PNG, т.е. много трафика).
Read more

21 comments