Можно ли загрузить SWF AS2 в SWF AS3? Как я могу добавить это на сцену и взаимодействовать с ним из As3 SWF? - PullRequest
2 голосов
/ 18 мая 2009

Я пытаюсь загрузить SWF, написанный на AS2, в AS3 SWF - используя класс Loader и прослушивая Event.COMPLETE в моей функции onCompleteHandler я хочу добавить это на сцену, поэтому я пытаюсь -

addChild(evt.currentTarget.content) 

... но я получаю следующее сообщение об ошибке:

Error #2180: It is illegal to move AVM1 content (AS1 or AS2) to a different part of the displayList when it has been loaded into AVM2 (AS3) content.

AS2 swwf имеет много кода, и я действительно не хочу переходить на AS3, если я могу избежать этого. Кто-нибудь знает, возможно ли это, или знает другой способ добавить загруженный SWF на сцену. Как мне тогда вызывать функции в загруженном SWF?

Вот фрагмент кода -

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
var request:URLRequest = new URLRequest("testLoadSwf.swf");
loader.load(request);

function onCompleteHandler(evt:Event) {
   addChild(evt.currentTarget.content);
}

Спасибо всем.

Ответы [ 2 ]

2 голосов
/ 18 мая 2009

Единственный действительно эффективный способ сделать это - использовать LocalConnection. AS2 и AS3 не могут много общаться друг с другом. Если у вас все еще есть доступ к источнику файла AS2, вы можете предоставить некоторые функции с помощью LocalConnection. Существует также классный вспомогательный класс от Гранта Скиннера под названием SWFBridge, который берет на себя некоторые из основ этого, он доступен здесь: http://www.gskinner.com/blog/archives/2007/07/swfbridge_easie.html

0 голосов
/ 28 июля 2009

var loader: Loader = new Loader (); loader.contentLoaderInfo.addEventListener (Event.COMPLETE, onCompleteHandler); var request: URLRequest = new URLRequest ("testLoadSwf.swf"); Loader.load (запрос);

функция onCompleteHandler (evt: Event) { //addChild(evt.currentTarget.content); } AddChild (погрузчик)

...