AS3预加载外部swf不会达到100%

时间:2013-01-22 22:14:26

标签: actionscript-3 flash preloader

我有一个Flash界面文件,我正在尝试使用预加载器加载外部swfs。我的问题是在尝试播放swf之前,预加载器从未达到100%。预加载器将显示,计数达到百分比并消失。然后swf在完成加载时在第一帧(有时超过10秒!)上挂起几秒钟。它最终开始播放。加载程序达到的百分比完全是随机的。它可能一次达到40%,而下一次只有7%。

我正在将外部swfs加载到名为“visloader”的舞台上的空movieClip中。

这是我的加载程序代码:

loader= new SWFLoader("nameOfSlide.swf", {container:visloader, autoPlay:false, onProgress:progressHandler, onComplete:completeHandler});

loader.load();

以下是我的进展和完整的功能:

//--------------PROGRESS HANDLER----------------------------------------------------------------
function progressHandler(e:Event):void{
    //set alpha of loading animation to 1 so it is visible
    progClip.alpha = 1;
    progClip.loadPct.text = "" + Math.floor((loader.bytesLoaded/loader.bytesTotal)*100) + "%";
}

//--------------COMPLETE HANDLER-----------------------------------------------------------------

function completeHandler(e:Event):void{
    //hide the preloader animation
    progClip.alpha = 0;
    //myClip was created in the variables section above to hold the loaded swf
    //must use 'rawContent' to get control over the swf (play/pause, etc...)
    myClip = e.target.rawContent;       

    myClip.play();
}

“progClip”是舞台上的movieClip,带有旋转圆圈和名为“loadPct”的文本字段。

正在加载的外部swfs非常大。一些超过5 MB。不确定是否重要。我已经使用完全相同的预加载器用于具有稍小文件的不同客户端并且没有问题。我完全失去了。

我认为以前没有问过这个问题。我搜索了论坛,没有想到什么。希望有人在这里知道我在说什么。

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果SWFLoader过早地触发完整事件,并且你无法通过查看类本身来看到原因,那么你可以尝试检查 - 在progressHandler中,使用EnterFrame或者Timer - for loader.bytesTotal == loader.bytesLoaded。如果是,请删除相关的听众并从那里开始。

我知道,但是如果SWFLoader工作不正常,那就修复课程或者获得另一个库。我现在要自己看一下,同时希望这有助于/有效!