プリローダーは、本来あるべき3%の後に表示されず、ファイルが完全にロードされたときに表示されます。
誰かが私が間違っていることを私に説明するのを手伝ってもらえますか?私のコードは最初のフレームにあり、長方形オブジェクトとテキストフィールドオブジェクトを使用しています。私がこのようなコードで見た他のプリローダーでは、100フレームのムービークリップを使用しています。それは違いを生みますか?長方形の幅を更新するコードと、動的テキストボックスのテキストを更新するコードがあります。
最初のフレームのコード全体:
import flash.display.MovieClip;
import flash.events.ProgressEvent;
function update(e:ProgressEvent):void {
//trace(e.bytesLoaded);
if (loader) {
loader.text = Math.round(e.bytesLoaded*100/e.bytesTotal).toString() + " %";
}
if (bar) {
bar.width = Math.round(e.bytesLoaded*100/e.bytesTotal)*2;
}
}
loaderInfo.addEventListener(ProgressEvent.PROGRESS, update);
var loader:TextField = new TextField();
var bar:preloader_bar = new preloader_bar();
addEventListener(Event.ENTER_FRAME, checkFrame);
var loaderTextFormat:TextFormat = new TextFormat("_sans", 16, 0x000000, true);
loaderTextFormat.align = TextFormatAlign.CENTER;
loader.defaultTextFormat = loaderTextFormat;
bar.color = 0x000000;
addChild(bar);
addChild(loader);
// Extra test for IE
var percent:Number = Math.floor( (this.loaderInfo.bytesLoaded*100)/this.loaderInfo.bytesTotal );
if (percent == 100) {
nextFrame();
}
stop();
if (loader) {
loader.x = (stage.stageWidth - loader.width) / 2;
loader.y = stage.stageHeight / 2;
}
if (bar) {
bar.x = (stage.stageWidth - 200) / 2;
bar.y = (stage.stageHeight - bar.height) / 2;
}
function checkFrame(e:Event):void {
if (currentFrame == totalFrames) {
removeEventListener(Event.ENTER_FRAME, checkFrame);
startup();
}
}
function startup():void {
// hide loader
stop();
loaderInfo.removeEventListener(ProgressEvent.PROGRESS, update);
var mainClass:Class = Main as Class;
addChild(new mainClass() as DisplayObject);
}
それは本当に現れるはずです、私が変更する必要があるいくつかの派手なエクスポートオプションはありますか?帯域幅プロファイラーでこれを試しましたが、100%マーク以降のみが表示されます。
編集:progress_barは、actionscript用にエクスポートされたムービークリップです。