Как с помощью [embed] встроить swf с кодом

Мы знаем, что при встраивании swf с помощью тега [Embed] весь код, который был в swf-ке, утрачивается. Есть один способ как уберечь код.

Сначала создадим во Flash IDE флэшку, главным классом которой будет, например, assets.Flea. В этом классе сделаем метод startJumping(), который просто будет начинать проигрывание флэшки. Файл назовём flea.swf.

Теперь встроим flea.swf в какой-нибудь класс во Flex-проекте:

  1. [Embed(”assets/flea.swf”, mimeType=”application/octet-stream”)]
  2. private var FleaAsset:Class;

mimeType=”application/octet-stream” даёт понять компилятору Flex, что встраивание нужно проводит без никаких конвертаций.

Теперь во FleaAsset мы имеем класс ByteArrayAsset, т.е., практически ByteArray.

Далее загружаем экземпляр FleaAsset в Loader с помощью loadBytes():

  1. var currLoader:Loader = new Loader();
  2. var ldrContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
  3. currLoader.loadBytes( new FleaAsset(), ldrContext );

ldrContext мы используем, что бы быть уверенными, что класс, который находиться в FleaAsset будет тем же самым, что и во Flex проекте.

Далее, что бы класс из FleaAsset появился для нашего использования нам нужно подождать один кадр. Это не очень хорошо, но как это обойти я не знаю.

  1. var sprite:Sprite = new Sprite();
  2. sprite.addEventListener(Event.ENTER_FRAME, enterFrameHandler);

Далее, мы просто создаём экземпляр класса assets.Flea и используем его как хотим. Вся графическая часть, созданная во Flash IDE останется :)

  1. import assets.Flea;
  2. function enterFrameHandler(event:Event):void
  3. {
    1. var flea:Flea = new Flea();
    1. addChild(flea);
    1. flea.startJumping();
    2. sprite.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
  4. }

Я сделал пример библиотечки, которая может упростить работу с встроенными swf.

Что бы узнать больше, рекомендую почитать ещё следующее (на английском):

Таґи: , , , ,

Коментарів: 4 to “Как с помощью [embed] встроить swf с кодом”

  1. nouba:

    кул! рилі кул! :)

  2. UltimateX:

    Прикольно, такое не часто прочитаешь. Не всякий дурак до такого додумается. Да если бы это было кому-нибудь интересно, наверное было бы больше комментариев.

  3. Marina:

    Удивительно как Вы при достаточно спокойном таком стиле в плане дизайна блога смогли все так грамотно скомпоновать. Тут и текст, и оглавление и ссылки и навигация прикольная. Я вот два раза начинал дизайн мастерить, но так не разу не смог к идеау прийти. Если надумаете когда-то заняься благотворительностью и выложить Ваш шаблон в свободный доступ, то я его первый скачаю, единсвенно только теги пока у Вас не модные. видел щаз крутящиеся уже. До встречи в блогосфере

  4. Аксаков:

    В принципе если на данном проекте будут писаться в такой же тематике и дальше, буду читать.

Залиште свій коментар