我做了以下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