2010-06-30 4 views
0

Ceci est un projet AS3 créé dans FlashDevelop. Il cible flash player 10. J'ai un problème dérangeant lors de l'exécution de ce code:crash brut lors du chargement de swf externe (avec exemple de code cette fois-ci)

package 
{ 
    import flash.display.Loader; 
    import flash.display.MovieClip; 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.net.URLRequest; 

    public class Main extends MovieClip 
    { 
     private var loader:Loader; 
     private var sprite:Sprite; 

     public function Main():void 
     { 
      if (stage) init(); 
      else addEventListener(Event.ADDED_TO_STAGE, init); } 

     private function init(e:Event = null):void { 
      removeEventListener(Event.ADDED_TO_STAGE, init); 

      loader = new Loader(); 
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadingDone); 

      loader.load(new URLRequest('loadIn.swf')); // error occurs when loading this file. 
      //loadIn.swf is compiled with all the code in this file but with the loader-parts commented out... 

        // just a Adobe Flash created graphic, no problems loading this one 
      //loader.load(new URLRequest('waitingPopup.swf')); 

      //sprite = new Sprite(); 
      //sprite.graphics.beginFill(0xFF0000); 
      //sprite.graphics.drawRect(0, 0, 490, 356); 
      //sprite.graphics.endFill(); 
      //addChild(sprite); 
     } 
     private function loadingDone(e:Event):void { 
      trace(loader.contentLoaderInfo.contentType);  // application/x-shockwave-flash 
      trace(loader.contentLoaderInfo.parentAllowsChild); // true 
      trace(loader.contentLoaderInfo.sameDomain);   // true 
      trace(loader.contentLoaderInfo.swfVersion);   // 10 
      trace(loader.contentLoaderInfo.content);  // [Object Main] 

      //this is were everything goes south 
      addChild(e.target.content); 
     } 
    } 
} 

Maintenant, ce que je comprends de la fenêtre de débogage, ce qui se passe est que le swf redémarre et se termine juste dans une boucle quand j'essaie d'appeler le addChild() -method. Tout ce qui est montré dans ma fenêtre de sortie est:

[SWF] C:\svn\Development\TestProject\bin\loadIn.swf - 1 797 bytes after decompression. 
application/x-shockwave-flash 
true 
true 
10 
[object Main] 

Des idées ce qui pourrait créer une telle boucle étrange et une erreur? J'ai essayé de le résoudre toute la journée. Peut-être quelques types de paramètres dans FlashDevelop ou les paramètres du compilateur MXMLC?

Reconnaissant pour toutes les réponses!

Répondre

0

Si elles ont le même nom et vous n'êtes pas en mesure ou ne veulent pas pour changer le nom, essayez de charger le fichier avec un nouveau domaine d'application dans le LoaderContext de votre URLRequest: http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/system/LoaderContext.html Cela devrait résoudre tous les conflits.

+0

merci beaucoup! résolu mes problèmes! J'ai eu un peu de collision d'espace de noms entre le swf chargé et mon swf principal, je n'avais aucune idée que flash était si sensible à cela. J'ai trouvé étrange que je ne reçoive pas d'erreur lors du chargement d'un fichier dont la classe principale a le même nom que mon swf principal, ce qui (je suppose) finit par appeler la classe principale de ma swf principale => loop: merci encore! – Tobias

+0

Content de l'entendre! =) – DHuntrods

0

Il peut être utile de supprimer le programme d'écoute LoadingDone avant d'ajouter l'enfant. Peut-être que l'événement COMPLETE du deuxième swf chargé des bulles jusqu'à la pince principale et une autre charge redéclenche:

private function loadingDone(e:Event):void { 
    loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadingDone); 
    addChild(e.target.content); 
} 

l

+0

Essayé cela aussi bien et cela n'a pas fonctionné, mais merci pour la suggestion! Maintenant, je pense que le problème pourrait être que les fichiers ont une classe principale avec le même nom ... – Tobias

Questions connexes