繁体   English   中英

在AS3中加载SWF,但Flash会不断重复构造函数,该怎么办?

[英]Loading SWF in AS3 but flash keeps repeating constructor function, what should I do?

我正在使用Loader类导入多个外部文件,其中一个是swf文件。 这样做时(我之前做过成功,所以没想到有任何问题),我遇到了各种各样的错误,最后Flash崩溃了。

我在构造函数中放了一条跟踪,它并没有跟踪一次,而是一直跟踪,这表明构造函数陷入了循环。 我猜想太多的相同swf加载是导致Flash最终崩溃的原因。

这是我的代码(swf im加载现在是一个简单的测试文件,其中包含图像而没有代码):

    private var slides:Loader = new Loader();

    public function DocumentClass()
    {
        trace(1)
        slides.load(new URLRequest("Resources/Slides.swf"));
        slides.contentLoaderInfo.addEventListener(Event.COMPLETE, SlidesComplete);
    }


    public function SlidesComplete(evt:Event):void
    {
        slides.contentLoaderInfo.removeEventListener(Event.COMPLETE, SlidesComplete);
        addChild(slides);
    }

这将跟踪“ 11111111111 ...”,并且所有内容最终都消失了。

救命!

尝试在要加载的SWF文件的顶部(在动作脚本中或在时间轴上)放置一个stop()动作。 同时,swf 可能正在加载中,并且正在运行播放并循环运行(因此,您的代码会一遍又一遍地运行)。

我会进行进度监视,直到SWF文件完全加载,然后跳到您的显示框架:

  • 创建一个用于加载的部分(如果要使用预加载器,则可以选择)
  • 为加载的内容创建另一个部分(关键帧集)。 我使用关键帧是因为它很容易,但是您也可以等待实例化类,直到加载完成。

以下是我偶尔创建的摘录:

// stop the playhead from moving ahead
stop(); // you can also use gotoAndStop("loading"); if you want

function loaderProgressHandler(event:Event):void {
    // switch the framehead to main which will show your content
    if(event.bytesLoaded >= event.bytesTotal) {
        event.target.removeEventListener(Event.PROGRESS, this.loaderProgressHandler);
        this.gotoAndStop("main");
    }
}

this.loaderInfo.addEventListener(Event.PROGRESS, this.loaderProgressHandler);

希望能有所帮助

我只是被这个同样的问题困扰。

以我为例,问题出在与被加载的swf具有相同文档类名称的swf。

例如。 Main.as正在加载另一个SWF文件,该SWF文件也具有名为Main.as文档类-将其更改为其他名称可以解决无限循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM