Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Embed SWF (http://www.flasher.ru/forum/showthread.php?t=194256)

incoob 10.02.2013 23:16

Embed SWF
 
Столкнулся с проблемой: при внедрении swf файла
Код AS3:

[Embed(source='correct_path.swf')]
public class MyClass extends MovieClip
{
}

флексовый компилятор мне говорит
Цитата:

Error: 'correct_path.swf' results in generated code, cannot use existing class 'MyClass'
Error: Unable to transcode correct_path.swf.
При этом нормально компилируется код вида
Код AS3:

public class MyClass extends MovieClip
{
        [Embed(source='correct_path.swf')]
        private var _class:Class;
}

Но тут возникает всем известная проблема - во втором случае во флешку попадает куча "мусора" из флексового фреймворка. Можно эту проблему обойти, переименовав *.swf файл в какой-нибудь *.bin, и затем внедрив его как application/octet-stream. Но уж очень потом лениво создавать специальный Loader и этот ByteArray в себя грузить.

Может кто-нибудь подскажет, как с этой проблемой бороться?

KumoKairo 11.02.2013 01:39

Код AS3:

[Embed(source='correct_path.swf', mimeType = "application/x-shockwave-flash")]
private var _class:Class;


incoob 11.02.2013 11:28

Цитата:

Сообщение от KumoKairo (Сообщение 1120132)
Код AS3:

[Embed(source='correct_path.swf', mimeType = "application/x-shockwave-flash")]
private var _class:Class;


Вы не очень внимательно прочитали моё сообщение. Даже без дополнительного указания mimeType флешка успешно внедряется как поле класса.
Цитата:

Сообщение от incoob (Сообщение 1120113)
При этом нормально компилируется код вида
Код AS3:

public class MyClass extends MovieClip
{
        [Embed(source='correct_path.swf')]
        private var _class:Class;
}


Указывание mimeType в первом случае не помогает. Код
Код AS3:

[Embed(source='correct_path.swf', mimeType = 'application/x-shockwave-flash')]
public class MyClass extends MovieClip
{
}

не компилируется.

KumoKairo 11.02.2013 12:39

А, да, и правда поторопился

В таком случае, думаю, вот это поможет:
Код AS3:

[Embed(source="asset.swf")]
private var assetClass:Class;
 
var asset:MovieClip = new assetClass();

Флешка загрузится и будет работать как мувиклип, но есть одно но - не будет доступа к внутреннему содержимому.

Если понадобится готовый "расшифровщик", остаток кода в этой статье)
http://alecmce.com/as3/embed-asset-gotcha

Nooob 12.02.2013 05:12

Нужно всё что находится в "correct_path.swf" засунуть в символ, и назначить этому символу имя класса, например "SymbolTest".
в дальнейшем внедрение файла будет работать, если указать параметр "symbol" (будет внедрён только байткод символа, без всякого мусора)
Код AS3:

        [Embed(source="correct_path.swf", mimeType="application/x-shockwave-flash", symbol="SymbolTest")]
        public class MyClass extends MovieClip
        {
        }

Embedding SWF files

incoob 12.02.2013 21:23

Цитата:

Сообщение от Nooob (Сообщение 1120335)
Нужно всё что находится в "correct_path.swf" засунуть в символ, и назначить этому символу имя класса, например "SymbolTest".
в дальнейшем внедрение файла будет работать, если указать параметр "symbol" (будет внедрён только байткод символа, без всякого мусора)
Код AS3:

        [Embed(source="correct_path.swf", mimeType="application/x-shockwave-flash", symbol="SymbolTest")]
        public class MyClass extends MovieClip
        {
        }

Embedding SWF files

Спасибо тебе, добрый человек!


Часовой пояс GMT +4, время: 19:49.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.