1

我有一个闪存接口文件,我正在尝试使用预加载器加载外部 swf。我的问题是预加载器在尝试播放 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”的文本字段。

正在加载的外部 swf 非常大。有些超过 5 MB。不确定这是否重要。我已经为文件稍小的不同客户端使用了完全相同的预加载器,并且没有任何问题。我完全不知所措。

我认为以前没有人问过这个问题。我搜索了论坛并没有想出任何东西。希望这里有人知道我在说什么。

提前致谢!

4

1 回答 1

0

如果 SWFLoader 过早触发 complete 事件,并且您无法通过查看类本身来了解原因,您可以尝试检查 - 在 progressHandler、EnterFrame 或 Timer 中 - 当 loader.bytesTotal == loader .bytesLoaded。当它发生时,删除相关的侦听器并从那里开始。

Bit of a hack I know but if SWFLoader isn't working properly it's that, repair the class or get another library. I'm gonna have a look at it myself now, for the meantime hope this helps/works!

于 2013-01-23T20:38:37.533 回答