AS3 Preloader не работает в браузере, но работает во Flash Professional - PullRequest
0 голосов
/ 10 мая 2010

У меня есть SWF, к которому я добавил сцену Preloader. Прелоадер работает нормально, когда я нажимаю Ctrl + Enter во Flash CS4 и выбираю «Вид»> «Имитация загрузки».

Отображается предварительный загрузчик, и после заполнения фильм продолжается, как и ожидалось.

Однако, в тот момент, когда я встраиваю SWF-файл в некоторый HTML-код и загружаю из localhost в любом браузере, фильм не продолжается, пока я не щелкну правой кнопкой мыши и не выберу «Play».

Когда я использую прокси-сервер Charles Web Debugging Proxy и регулирую соединение, то снова происходит предварительная загрузка, и фильм продолжается после завершения?

Есть идеи, что может пойти не так? Вот источник для прелоадера:

import flash.events.ProgressEvent;

loaderInfo.addEventListener(ProgressEvent.PROGRESS, update);

function update(e:ProgressEvent):void
{
    var percent:Number = Math.floor((e.bytesLoaded * 100) / e.bytesTotal);

    if(preloaderClip is MovieClip)
    {
        preloaderClip.gotoAndStop(percent);
    }

    if(percent == 100)
    {
        play();
    }
}

// Extra test for IE
var percent:Number = 
    Math.floor((this.loaderInfo.bytesLoaded * 100) / this.loaderInfo.bytesTotal);

if(percent == 100)
{
    nextFrame();
}
stop();

Ответы [ 2 ]

1 голос
/ 10 мая 2010

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

Очень сложно быть более конкретным, чем без кода, на который можно посмотреть.

0 голосов
/ 10 мая 2010

Ура! Починил это! Я просто добавил прослушиватель событий ADDED_TO_STAGE со следующим кодом:

private function onAddedToStage(event:Event):void
{
    var percent:Number = 
        Math.floor((this.loaderInfo.bytesLoaded * 100) / this.loaderInfo.bytesTotal);

    MonsterDebugger.trace(this, "ADDED_TO_STAGE " + percent + " loaded...");

    if(percent == 100)
    {
        gotoAndPlay("in", "Main");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...