2009-05-18 14 views
2

J'essaie de charger un swf écrit en AS2 dans un swf AS3 - en utilisant la classe Loader et en écoutant Event.COMPLETE. dans ma fonction onCompleteHandler je veux ajouter à la scène si Im essayant -Un swf AS2 peut-il être chargé dans un swf AS3? Comment puis-je ajouter ceci à la scène et interagir avec lui depuis As3 swf?

addChild(evt.currentTarget.content) 

... mais je reçois le message d'erreur suivant:

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. 

Le AS2 swwf a beaucoup de code et Je ne veux vraiment pas avoir à migrer vers AS3 si je peux l'éviter. Quelqu'un sait si cela est possible ou si vous connaissez une manière différente d'ajouter le swf chargé à la scène. Comment puis-je appeler des fonctions dans le swf chargé?

est ici un extrait de code -

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); 
} 

Merci tous.

Répondre

2

La seule façon vraiment efficace de le faire est d'utiliser LocalConnection. AS2 et AS3 ne peuvent pas communiquer beaucoup entre eux. Si vous avez toujours accès à la source du fichier AS2, vous pouvez exposer certaines fonctions avec LocalConnection. Il y a aussi une classe d'aide ordonnée par Grant Skinner appelée SWFBridge qui prend une partie du travail de base, c'est disponible ici: http://www.gskinner.com/blog/archives/2007/07/swfbridge_easie.html

0

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

Fonction onCompleteHandler (evt: Event) { //addChild(evt.currentTarget.content); } addChild (loader)