flash crash when loading external swf (with code example this time around)

我只是一个虾纸丫 提交于 2020-01-05 13:09:07

问题


This is a AS3 project created in FlashDevelop. It targets flash player 10. I have a disturbing problem when running this code:

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

Now, what I can gather from the debug window, what happens is that the swf restarts itself and just ends up in a loop when i try to call the addChild()-method. All that is shown in my output window is:

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

Any ideas what could create such a strange loop and error? I´ve been trying to solve it all day. Maybe some kind of settings in FlashDevelop or parameters to the MXMLC compiler?

Thankful for all answers!


回答1:


If they do have the same name and you're not able or don't want to change the name, try loading the file with a new applicationDomain in the LoaderContext of your URLRequest: http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/system/LoaderContext.html That should resolve any conflicts.




回答2:


It might help if you remove the LoadingDone listener before adding the child. Maybe the COMPLETE event of the second loaded swf bubbles up to the main clip and retriggers another load:

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

l



来源:https://stackoverflow.com/questions/3151912/flash-crash-when-loading-external-swf-with-code-example-this-time-around

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!