我做了以下AS3預載定時
package classes
{
// imports removed
public class Main extends MovieClip {
// vars removed
public function Main():void {
trace('--> Main Function started ...');
/**************************************
Preloader
**************************************/
var preLoader:PreLoader = new PreLoader(); // init
stage.addChild(preLoader); // to Stage
stage.loaderInfo.addEventListener(ProgressEvent.PROGRESS, preLoader.preloaderProgress); // calling the function
doThis();
}
}
隨着預加載類看起來像這樣:
package classes {
// imports removed
public class PreLoader extends MovieClip {
public var totalBytes:uint;
public var loadedBytes:uint;
public function PreLoader() {
trace('--> PRELOADER Started ...');
this.addEventListener(Event.ADDED_TO_STAGE, addedHandler);
this.loaderBar.scaleX = 0;
}
private function addedHandler(e:Event):void {
trace('Adding Preloader ...');
totalBytes = this.stage.loaderInfo.bytesTotal;
trace('PL: Total ' + totalBytes + '/' + loadedBytes);
this.removeEventListener(Event.ADDED_TO_STAGE, addedHandler);
preloaderProgress(e);
}
public function preloaderProgress(e:Event):void {
trace('Progress...');
loadedBytes = this.stage.loaderInfo.bytesLoaded;
this.loaderBar.scaleX = loadedBytes/totalBytes;
this.loaderBar.alpha = 1 - this.loaderBar.scaleX;
if (totalBytes == loadedBytes) {
trace('Removing PreLoader ...');
this.parent.removeChild(this);
}
}
}
}
問題:預加載不顯示inital BEFORE SWF文件已完成加載。即使所有的追蹤輸出都是在主要電影完成時開始的 - 我做了一些關於「慢速連接」的分析。
如果你想知道:doThis()從XML文件加載數據,從這裏一切都很好,跟蹤輸出是在正確的時間(但爲時已晚,在所有:d)
預先感謝您!
編輯:也許問題是:有什麼方法可以確定主電影何時開始加載?
謝謝!我沒有完全理解你的意思是「把你的預加載器放到第一幀」,因爲電影中沒有任何東西需要文檔類和預加載器類。有沒有辦法將文檔類放入第二個框架? init()方法是一個非常好的技巧!謝謝你! – Rockbot 2012-07-27 09:08:25
再次打招呼。我修改了PreLoader.as,並將其用作我的Flash文件的文檔類 - 對嗎?現在我得到一個錯誤:_Error#1065:變量主未定義._ - 'var mainClass:Class = getDefinitionByName('classes.Main')作爲類;'我錯過了什麼? – Rockbot 2012-07-27 10:08:15
hello :)不,您必須使用Main.as作爲文檔類。 – eleven 2012-07-27 10:18:40