Flash preloader запускается только на 90% - PullRequest
3 голосов
/ 12 мая 2011

Я работаю над игрой во Flash CS5 / AS3 и пытаюсь заставить работать мой предварительный загрузчик. В данный момент, когда я загружаю SWF-файл с помощью функции имитации загрузки, файл загружается, но мой предварительный загрузчик не отображается. Предварительный загрузчик показывает на момент, когда загрузка составляет около 90%.

Я снял флажок «экспортировать в первый кадр», так как это то, что Интернет сказал мне, но есть так много разных учебных пособий почти для каждой версии Flash / AS вокруг, что я довольно запутался; не уверен, как это исправить.

Мой код предварительной загрузки выглядит следующим образом:

stop();

this.addEventListener(Event.ENTER_FRAME, loading);

function loading(e:Event):void{

var total:Number = this.stage.loaderInfo.bytesTotal;
var loaded:Number = this.stage.loaderInfo.bytesLoaded;

percent_txt.text = Math.floor((loaded/total)*100)+ "%";  

if (total == loaded){
play();
this.removeEventListener(Event.ENTER_FRAME, loading);
}

}

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

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

Если у вас есть какой-либо контент в кадре 1 главной временной шкалы, вы никогда не сможете предварительно загрузить ТО - ваш фильм начнет воспроизводиться только после загрузки контента в кадре 1. Попробуйте переместить все несущественные «вещи» в кадр 2 и установите этот кадр в качестве кадра экспорта для ActionScript. Теперь вы должны увидеть свой preloader задолго до 90%. После завершения предварительной загрузки отправьте фильм в кадр 2 с помощью gotoAndPlay (2).

В качестве альтернативы (и, вероятно, лучшей практики), создайте swf-файл "loader", единственная функция которого - загружать в ваш основной swf. Поместите ваш preloader в этот загрузчик swf и ничего больше, и оставьте весь свой другой контент в вашем основном swf. Загрузите ваш основной SWF-файл, используя класс Loader или стороннюю библиотеку загрузки, например BulkLoader, и поместите его на сцену после завершения загрузки.

Надеюсь, это поможет.

0 голосов
/ 12 мая 2011

Когда вы компилируете и запускаете приложение, нажмите View, а затем Bandwidth Profiler в меню.Это позволит вам увидеть, насколько велик каждый кадр с точки зрения того, сколько данных загружается в этот кадр.Если ваш первый кадр больше, чем около 30 КБ, то у вас есть проблема.Старайтесь, чтобы ваш preloader был максимально простым (без картинок и т. Д.).Также, как вы сказали, убедитесь, что вы сняли флажок «Экспорт в кадре 1» для всех ваших активов.

Также я бы заменил this.stage.loaderInfo на root.loaderInfo.

stop();

var total:uint = root.loaderInfo.bytesTotal;
var loaded:uint = 0;

addEventListener(Event.ENTER_FRAME, loading);
function loading(e:Event):void
{
    loaded = root.loaderInfo.bytesLoaded;
    percent_txt.text = Math.floor((loaded/total)*100)+ "%";  

    if(total >= loaded)
    {
        removeEventListener(Event.ENTER_FRAME, loading);
        play();
    }
}
...