#actionscript-3 #flash-builder
#actionscript-3 #flash-builder
Вопрос:
Я встраиваю внешний swf-файл во Flash builder следующим образом:
[Embed(source="assets/sounds/mytestswf.swf")]
private static var mySwf: Class;
Как я могу получить к нему доступ и добавить его в другой спрайт на сцене?
Ответ №1:
я не думаю, что вам нужен загрузчик, это для библиотек, которые добавляются во время выполнения. Embed компилирует ресурсы непосредственно в swf, поэтому addChild(new mySwf());
достаточно добавить его в список отображаемых объектов.
очевидно, что вы хотели бы присвоить его переменной, поэтому
var $mySwf:mySwf = new mySwf();
addChild($mySwf);
Кстати, вы должны называть свои классы последовательно. Имена классов начинаются с заглавной буквы, поэтому вы можете отличить их от переменных
[Embed(source="/assets/sounds/mytestswf.swf")]
private static var MySwf: Class;
...
var $mySwf:MySwf = new MySwf();
addChild($mySwf);
Комментарии:
1. на новом FB 4.7 я думаю, вам нужно будет добавить косую черту в начале («/assets/yourswif.swf»), чтобы предотвратить ошибки. Также убедитесь, что вы не используете относительные пути, такие как ../..
Ответ №2:
Во-первых, вам нужно указать mimeType="application/octet-stream"
на вашем Embed
. Затем вам нужно создать Loader
экземпляр и использовать Loader.loadBytes()
метод для загрузки ByteArray
связанного со встроенным классом:
var bytes:ByteArray = new mySwf();
var loader:Loader = new Loader();
loader.loadBytes(bytes);
addChild(loader);
Ссылка для изучения: метод Loader.loadBytes()
Комментарии:
1. См. Примечание выше о добавлении
mimeType
объявления кEmbed
вызову.2. Пожалуйста, уточните «не работает» — есть ли ошибка, или код в загруженном SWF-файле не выполняется и т. Д.?