Category Archives: AS3

Vector.<B/* extends/implements A*/> в Vector.<A>

Просто FYI:

This content requires Adobe Flash Player.

UPD: Блуд крутой:

This content requires Adobe Flash Player.

FontLoader 2.3

Вышла новая версия FontLoader — 2.3!
Наконец-то внедрена поддержка CFF-шрифтов (в теге DefineFont4) для работы FlashTextEngine. Эту поддержку можно было добавить единственной строчкой с ID тега DefineFont4 (91), но мне этого показалось слишком мало, чтобы поднимать версию FontLoader-а.

В ходе сборки библиотек с CFF-шрифтами в Flash CS5 неожиданно выяснилось (по правде сказать, я так и не пощупал FTE до сих пор), что для внедрения требуется библиотека textLayout.swc, которая может быть внедрена непосредственно в swf, либо может загружаться как RSL.

В первом случае кроме излишнего веса конечного swf, проблемы не было — тег DefineFont4 объявлен, шрифт есть, FontLoader пашет как автомат Калашникова. Во втором же случае Flash CS5 создает оболочку-прелоадер и в него внедряет наш swf, используя Embed (он же DefineBinaryData), т. е. в бинарном виде. Прелоадер загружает самого себя, загружает необходимые RSL и выполняет loadBytes внедренного swf. При подобной схеме FontLoader не находит в таком прелоадере шрифтов. В связи с этим, был добавлен рекурсивный анализ тегов DefineBinaryData на предмет наличия там валидного SWF. Проще говоря, теперь FontLoader умеет выдергивать шрифты из embedded-swf вне зависимости от вложенности.

Для подготовки библиотек со шрифтами можно использовать любой инструмент — Flash IDE от пятой версии до последней или Flash/Flex Builder (метатег [Embed]), либо Flex SDK.

Посмотреть демо и скачать примеры с исходниками класса.

getDefinitionNames v. 2.1

Очередной обновление getDefinitionNames (скачать исходники сразу) до версии 2.1. Появилась совместимость с Flash 10, изменен режим «только классы» на действительно только классы (без интерфейсов), а также в расширенном режиме находятся ещё и Vector.

Большое спасибо Даниелю за доскональное выяснение причин, по которым getDefinitionNames не работал с swf, скомпилированном с использованием Vector — оказалось, Adobe «забыла» задокументировать новый тип multiname для Vector.

Ожидается обновление ClassExplorer с теми же правками (поддержка Vector, но не уверен, что они будут перечислены в результирующем XML, т. к. на текущий момент generic-и в ABC реализованы кривовато), а также внесение в FontLoader поддержки тега DefineFont4 для совместимости с FTE. Следите за новостями!

getDefinitionNames v. 2.0

Сегодня день обновлений :)
В очередной раз обновился getDefinitionNames. На этот раз сразу до версии 2.0.

Что нового, вы можете узнать по ссылке.

Обновление getDefinitionNames

16.09.09 Обновился getDefinitionNames до версии 1.1.1.

Обновления 1.1.1:

  • Повторно исправлена ошибка первой версии :) Спасибо за внимательность Christophe Herreman!
  • Обновления 1.1:

  • Исправлена ошибка, в результате которой второй и последующие кадры swf, содержащие код, не распознавались
  • В качестве аргумента в функцию можно передавать как LoaderInfo (как было в предыдущей версии), так и ByteArray, содержащий корректный swf
  • И да, всех с Днём Программиста!

    FontLoader v. 2.2

    Очередная новая версия FontLoader. Добавилось событие IOErrorEvent.VERIFY_ERROR, которое посылается в случае, если загруженный файл имеет неверный формат (например, вместо swf загружен html).

    FontLoader v. 2.1

    FontLoader обновился до версии 2.1. По просьбам зарубежных товарищей, FontLoader теперь работает в среде AIR, а также добавился новый метод loadBytes, аналогичный одноименному методу класса Loader.

    Ссылка на инициализатор метода

    Задача: получить внутри метода ссылку на класс, описывающий данный метод.

    В порыве бреда:

    This content requires Adobe Flash Player.


    Код размещается внутри вызываемого метода (static, private, public, internal — неважно).
    Не спрашивайте меня, зачем эта задача и для чего её решать, я не знаю. :)

    Обновление MouseWheel

    Давненько ничего не писал :)

    Обновился MouseWheel, теперь захват мыши работает сразу и без вопросов. Протестировано на Firefox, IE7, Opera под Windows.

    //TODO: Надо бы поплотнее заняться блогом.

    Захват колеса мыши

    После перехода на ActionScript 3 и Flash Player 9 вы наверняка сталкивались с тем, что размещенный на странице ролик не захватывает скролл мыши (как это было в ActionScript 1/2), позволяя пользователю прокручивать содержимое страницы независимо от того, находится ли ролик в фокусе или нет. Достаточно давно я опубликовал класс GlobalMouse, он решал данную проблему, но в целом был неудобен именно для решения подобной проблемы. В связи с этим, я написал класс MouseWheel, позволяющий захватывать и отпускать скролл мыши в любой момент времени при необходимости. К сожалению, браузер Safari, а также Mac OS-версии популярных браузеров (Opera/Firefox) не позволяют захватывать скролл мыши, поэтому данный класс в них работать не будет.

    Посмотреть демо вы можете здесь. Исходный код примера и сам класс найдете на той же странице.