2010-06-30 3 views
0

Это проект AS3, созданный в FlashDevelop. Он нацелен на флеш-плеер 10. У меня есть тревожные проблемы при выполнении этого кода:Вспышка при загрузке внешнего swf (пример кода на этот раз)

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

Теперь, что я могу собрать из окна отладки, что происходит в том, что SWF перезагрузится и просто заканчивается в цикле когда я пытаюсь вызвать метод addChild(). Все, что показано в моем окне вывода:

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

Любые идеи, что может создать такой странный цикл и ошибку? Я пытался все это решить весь день. Может быть, какие-то настройки в FlashDevelop или параметры для MXMLC-компилятора?

Благодарен за ответы!

ответ

0

Если они имеют такое же имя, и вы не можете или не хотите чтобы изменить имя, попробуйте загрузить файл с помощью нового applicationDomain в LoaderContext вашего URLRequest: http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/system/LoaderContext.html Это должно разрешить любые конфликты.

+0

спасибо большое! решил мои проблемы! Повернулось, что у меня было довольно много конфликтов пространства имен между загруженным swf и моим основным swf, я понятия не имел, что вспышка настолько чувствительна к этому. Мне было странно, что я не получаю ошибку, хотя при загрузке файла, у которого основной класс имеет то же имя, что и мой основной swf, который (я думаю) заканчивает вызов основного класса моего основного цикла swf =>:) еще раз спасибо! – Tobias

+0

Рад это слышать! знак равно – DHuntrods

0

Это может помочь, если вы удалите прослушиватель LoadingDone перед добавлением дочернего элемента. Может быть, ПОЛНОЕ событием второго загруженного SWF пузырьков до основного клипа и перезапускает другой груз:

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

л

+0

Пробовал это также, и он не работал, но спасибо за предложение! Теперь я думаю, что проблема может заключаться в том, что файлы имеют основной класс с тем же именем ... – Tobias

Смежные вопросы