Flash preloader: неправильно загружается предварительная загрузка?

Предварительный загрузчик не появляется после 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.

1 ответ

Решение

Вы проблема, кажется, очень похожи на это.

Короткая версия: у вас есть один кадр? Если это так, переместите как можно больше во 2-м кадре, а также установите его в качестве фрейма экспорта для ActionScript. Как только ваш первый кадр имеет небольшой размер, вы легко увидите предварительный загрузчик.

HTH, Джордж

Другие вопросы по тегам