當我學會了很難的方式時,Flash會對您的.swf進行流式處理,也就是說,即使只加載了第一對幀,它也可以開始播放文件。如何判斷主SWF何時完全加載?
通常情況下,當加載一個外部.swf時,你只需要在Loader或URLLoader類的COMPLETE事件中註冊一個處理程序,那就是它。 實施例(異常處理等省略):
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, completeHandler);
loader.load(request);
function completeHandler(event:Event):void {
//trigger starting playback here
}
然而,如果.swf文件是「主」 SWF,即,從HTML中引用的一個,我只能訪問root.loaderInfo財產,就是這樣的:
root.loaderInfo.loader.addEventListener(Event.COMPLETE, completeHandler);
給我的加載對象未充分加載提供此信息的錯誤。
,沒有工作,但令我生厭是有一個計時器和輪詢bytesLoaded屬性這樣的解決方法:
var Poller:Timer = new Timer(500, 0);
Poller.addEventListener(TimerEvent.TIMER, waitForLoad);
var e:Event;
waitForLoad(e);
function waitForLoad(event:Event):void {
if (root.loaderInfo.bytesLoaded < root.loaderInfo.bytesTotal) {
if (!Poller.running) Poller.start();
return;
} else {
Poller.stop();
completeHandler(event);
}
}
必須有比這更好的解決方案。理想情況下,我可以註冊事件處理程序completeHandler Event.COMPLETE到根或舞臺對象的某些屬性,它確實會在文件獲得完全加載時拋出此事件... 有誰知道它是哪個屬性?
乾杯,
佐爾坦
PS:我使用的Adobe Flash CS3
它的工作原理!謝謝。 – Zoli2xa 2009-10-13 22:21:28