Автоматическая установка фокуса на flash-приложение в браузере

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

Читать далее «Автоматическая установка фокуса на flash-приложение в браузере»

Встраивание шрифта в Adobe Flash CS

В последних версиях Flash-плеера Adobe внес какие-то изменения в отображение системных шрифтов, в следствие которых, шрифтом по-умолчанию стал Arial (до этого был Times). Это бы еще ничего, но для системных шрифтов теперь постоянно включен режим сглаживания, из-за которого текст небольшой высоты (10-12) выглядит сильно смазанным.
Добиться приемлемой четкости шрифта через AntiAliasType.ADVANCED мне не удалось. Поэтому выход остался один — встроить шрифт в flash-приложение.
Проинспектировав «гугл» на предмет встраивания шрифтов, можно получить множество ссылок на встраивание шрифтов и абсолютно во всех это предлагается делать посредством [EMBED …]
Помучавшись некоторое время, я убедился, что в Adobe Flash этот метод не работает и директива [EMBED] им преспокойно игнорируется. Выходит, этот метод подходит для Flex-разработчиков,но никак не годится для работающих в Adobe Flash.

Однако метод встраивания шрифта в Adobe Flash достаточно прост. Шрифт нужно включить в библиотеку проекта и залинковать для использования в приложении.

Читать далее «Встраивание шрифта в Adobe Flash CS»

О дрожании, или при чем здесь twips

Как реализовано движение объекта:
Есть алгоритм, вычисляющий положение объекта в зависимости от параметров и времени. Т.е. в любой момент времени, а точнее — каждую итерацию игрового цикла, положение объекта пересчитывается. Результата возвращается в глобальной системе координат (мировая система).
Соответственно, каждую итерацию игрового цикла происходит вызов процедуры перемещения объекта из координат предыдущей итерации в координаты итерации текущей.
Т.к. скорости движения отдельных объектов невелики, блоками происходит «пустой» вызов процедуры перемещения (когда координаты объекта в предыдущей итерации цикла равны координатам объекта в текущей итерации). Не оптимально, но разговор сейчас не об этом.
А о том, что в принципе перемещение из точки в туже самую точку не должно вызывать фактического перемещения. Процедура перемещения генерирует единичную матрицу, единичная матрица, умноженная на матрицу трансформации объекта, матрицу трансформации не меняет. Но…

Читать далее «О дрожании, или при чем здесь twips»

Подключение компонентов из пакета fl.* в проект на ActionScript 3

В отличие от компонентов из пакета flash.*, которые подключатся в проект одной строчкой import, чтобы подключить компонент из пакета fl.* этого не достаточно.
Чтобы подключить компонент из пакета fl.*, например fl.controls.CheckBox нужно:
— Открыть головной *.fla файл проекта
— Открыть окно с компонентами: Меню — Window — Components
— Открыть окно с библиотеками проекта: Меню — Window — Library
— Перетащить нужный компонент (в примере CheckBox) из окна компонентов в окно библиотек
— Сохранить *.fla файл.
Теперь в проекте можно использовать компонент CheckBox обычным способом:

concatenatedmatrix не единичная

Простейший пример, который показывает, что concatenatedmatrix у спрайта, который не имеет parent’а, не является единичной:

Читать далее «concatenatedmatrix не единичная»

Как создать класс по его текстовому имени

Если набор объектов в сцене описывается в XML-формате, а затем динамически генерируется в приложении — в общем случае описание сцены будет выглядеть, как нечто подобное:

XML-файл загружается в сцену через URLLoader и парсится стандартным обходом всего дерева:

Читать далее «Как создать класс по его текстовому имени»

Вращение спрайта вокруг произвольной точки

Собственно классическое решение задачи поворота спрайта на заданный угол вокруг произвольной точки (чаще всего его центра) путем матричных преобразований описана в куче литературы и интернет-источниках и звучит следующим образом: перенос спрайта таким образом, чтобы точка совпадал с точкой 0.0,0.0 , поворот на заданный угол, перенос обратно.
Функция RotateAroundAxis представляет реализацию данного метода (Axis — ось или точка, вокруг которой будет повернут спрайт, Angle — угол поворота):

 

Читать далее «Вращение спрайта вокруг произвольной точки»