AS3 External Preloader работает во Flash CS5, но не в браузере (chrome, Ff или IE) - придерживается 100% - PullRequest
0 голосов
/ 06 февраля 2011

Я видел пару вопросов, которые были решены, но ни один из них не относится к коду, который я использую, поэтому мне было интересно, может ли кто-нибудь помочь.

Я использую внешний предварительный загрузчик (loader.swf) для загрузки фильма (ayproj.swf). Прелоадер работает нормально при запуске файла .swf во флеш-плеере и при моделировании загрузки во flash cs5, но когда я загружаю его в Интернет и открываю index.html, в котором флеш-память находится в 100% фрейме, он либо залипает на 100 % (Ff и IE) или просто говорит «пл» (хром) - начальный текст в текстовом поле динамического процента.

Код для предварительного загрузчика:

stop();

import flash.net.URLRequest;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.display.Loader;
import com.greensock.TweenNano;

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

stage.addEventListener(Event.RESIZE, onStageResize);
addEventListener(Event.ENTER_FRAME, onFrame);

var barcomp:Number = stage.stageWidth;
percentContainer.x = stage.stageWidth/2 - percentContainer.width/2;
percentContainer.y = stage.stageHeight/2 - percentContainer.height/2;

function onStageResize(evt:Event):void {

    bar_mc.x = 0;
    bar_mc.y = (stage.stageHeight) - 3;
    bar_mc.height = 20;
    barcomp = stage.stageWidth;

    percentContainer.x = stage.stageWidth/2 - percentContainer.width/2;
    percentContainer.y = stage.stageHeight/2 - percentContainer.height/2;

}



function onFrame(evt:Event):void {

    bar_mc.x = 0;
    bar_mc.y = (stage.stageHeight) - 3;
    bar_mc.height = 20;
    barcomp = stage.stageWidth;

    percentContainer.x = stage.stageWidth/2 - percentContainer.width/2;
    percentContainer.y = stage.stageHeight/2 - percentContainer.height/2;   
}

var loader:Loader = new Loader();

loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, done);
loader.load(new URLRequest("ayproj.swf"));
loader.visible = false;

function loop(e:ProgressEvent):void {

    var perc:Number = e.bytesLoaded / e.bytesTotal;
    var s:String = Math.ceil(perc*100).toString()+"%";
    percentContainer.percent.text = s
    bar_mc.width = perc * barcomp;
}

function done(e:Event):void { 

    removeChildAt(getChildIndex(percentContainer)); 
    removeChildAt(getChildIndex(bar_mc));

    percentContainer.percent = null; 

    stage.addChild(loader);

    TweenNano.delayedCall(0.5, fadeInAyproj);
}

function fadeInAyproj():void {

    loader.visible = true;
    TweenNano.to(loader, 0.8, {alpha:0});
    TweenNano.from(loader, 0.8, {alpha:0});
}

Буду очень признателен, если кто-нибудь сможет помочь.

1 Ответ

0 голосов
/ 06 февраля 2011

Вы также должны проверить на 100% загрузку в обработчике ProgressEvent. Событие complete иногда не срабатывает.

function loop(e:ProgressEvent):void {

    var perc:Number = e.bytesLoaded / e.bytesTotal;
    if (perc >= 100) done (e);

//...more code
}

Также убедитесь, что ayproj.swf находится в той же папке, что и index.html, или создайте URL-адрес запроса относительно пути index.html.

...