Я пытаюсь загрузить полученный swf сборки swc вручную. Из-за моей конкретной среды нам необходимо разделить определения классов на swcs (где это имеет смысл), чтобы удалить избыточный код из выходных файлов swf.
Вкратце, я определяю класс (LibA
) в SWF, который я создаю с помощью compc
. Я компилирую его как в формат swc, так и в формат каталогов, поэтому я могу легко извлечь library.swf из каталога для загрузки во время выполнения (внешняя связь) и использовать swc для компиляции из любого swf, созданного с помощью Flash CS5 или mxmlc
.
LibA.as:
package
{
public class LibA
{
public function LibA()
{
trace("*** LibA()");
}
}
}
Main.as:
package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
import flash.system.LoaderContext;
public class Main extends Sprite
{
private var self:Main;
private var context:LoaderContext;
public function Main()
{
var l:Loader = new Loader();
self = this;
l.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event) {
self.addChild(l.content);
var liba:LibA = new LibA();
});
l.load(new URLRequest("./libs/build/liba.swf"));
}
}
}
Я создаю swc / каталог swc с помощью
compc -output libs/build/liba.swc -include-sources libs/LibA.as -debug=true
и я установил соответствующую привязку в настройках AS3 в Flash CS5 при создании Main
(класс, связанный непосредственно со сценой).
Все публикуется без проблем.
Однако во время выполнения я получаю VerifyError: Error #1014: Class LibA could not be found.
Что мне здесь не хватает? Я хочу иметь возможность загружать и использовать классы, определенные в liba.swf
из моего Main.swf
.
Полный дамп трассировки:
verify Function/<anonymous>()
stack:
scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$ Main Main]
locals: Object flash.events::Event? *
0:getlex 4
stack: Main?
scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$ Main Main]
locals: Object flash.events::Event? *
2:getlex 7
stack: Main? flash.display::Loader?
scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$ Main Main]
locals: Object flash.events::Event? *
4:getproperty content
stack: Main? flash.display::DisplayObject?
scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$ Main Main]
locals: Object flash.events::Event? *
6:callpropvoid addChild 1
stack:
scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$ Main Main]
locals: Object flash.events::Event? *
9:findpropstrict LibA
stack: Object
scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$ Main Main]
locals: Object flash.events::Event? *
11:constructprop 10 0
stack: *
scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$ Main Main]
locals: Object flash.events::Event? *
14:coerce LibA
VerifyError: Error #1014: Class LibA could not be found.
LoaderContext
. В этом контексте (без каламбура;)) я не думаю, что это имеет значение, поскольку это не веб-интерфейс. По сути, он запускается локально из Flash Player (сторонняя реализация виртуальной машины). - person Demian Brecht   schedule 17.01.2012LoaderContext
, и это не имело значения (хотя, возможно, я сделал что-то не так). - person Demian Brecht   schedule 17.01.2012LoaderContext
, когда пробовал его в последний раз. Спасибо. - person Demian Brecht   schedule 18.01.2012