Просмотр полной версии : прелоадер во втором кадре
Скажите, пожалуйста, как обрабатывать загрузку прелоадера, если он находится во втором, а не в первом кадре.
var _loaderInfo: LoaderInfo = loaderInfo;
// stop the parent clip
stop();
_loaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
_loaderInfo.addEventListener(ProgressEvent.PROGRESS, loaderProgress);
_loaderInfo..addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
function loaderComplete(event: Event) : void
{ ....}
function loaderProgress(event: Event) : void
{ ....}
function ioErrorHandler(event: Event) : void
{ ....}
В первом кадре работает, а если переместить во второй, то событие ProgressEvent.PROGRESS и Event.COMPLETE не возникают. Может надо какие другие события использовать?
Отличий от прелоадера в первом кадре нет.
Ресурсы у вас в какой кадр внедряются?
Что в первом кадре?
в первом кадре просто надпись "Загрузка"
во-втором сам загрузчик с вышеуказанным кодом
основная флешка с необходимыми ей ресурсами в третьем кадре.
Есть так же экспортируемые в AS, галочка в свойствах "Экспортировать в первый фрейм" снята
В настройках указал второй кадр для загрузки классов (указывал и первый и третий - разницы нет)
вот полный код загрузчика:
import caurina.transitions.*;
_txt.text = "0%";
var _loaderInfo: LoaderInfo = (parent as MovieClip).loaderInfo;
trace("_loaderInfo"+_loaderInfo.loaderURL);
mouseEnabled = false;
mouseChildren = false;
(parent as MovieClip).stop();
_loaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
_loaderInfo.addEventListener(ProgressEvent.PROGRESS, loaderProgress);
var TimerWhaiting:Timer; // таймер ожидающий когда желание спрятать
TimerWhaiting = new Timer(500);
TimerWhaiting.addEventListener(TimerEvent.TIMER, hideLoading);
var tmpObj;
function hideLoading(e:Event){
TimerWhaiting.stop();
tmpObj.play();
}
function loaderComplete(event: Event) : void
{
_txt.text = "100%";
destroyLoaderInfoMirror();
var tmp_obj = (parent as MovieClip).loading_element;
Tweener.addTween(tmp_obj, {width:600, height:600, alpha: 0, time:0.5, transition:"easeInElastic"});
addEventListener(Event.ENTER_FRAME, fadeOut);
TimerWhaiting.start();
tmpObj = (parent as MovieClip);
}
function loaderProgress(event: ProgressEvent) : void
{
var pct: int = event.bytesLoaded / event.bytesTotal * 100;
if (pct < 1) pct = 1; if (pct > 100) pct = 100;
bar.gotoAndStop(pct);
_txt.text = pct.toString() + "%";
// safety so the bar never gets wierd contortions to it
/*if (bar.scaleX > 1)
bar.scaleX = 1;
if (bar.scaleX < 0)
bar.scaleX = 0;*/
}
function destroyLoaderInfoMirror() : void
{
if (_loaderInfo == null)
return void;
_loaderInfo.removeEventListener(Event.COMPLETE, loaderComplete);
_loaderInfo.removeEventListener(ProgressEvent.PROGRESS, loaderProgress);
}
function fadeOut(event: Event) : void
{
alpha -= alpha / 5;
if (alpha < .01)
{
removeEventListener(Event.ENTER_FRAME, fadeOut);
try
{
if (parent && parent.contains(this))
parent.removeChild(this);
}
catch(e: Error)
{
visible = false;
}
}
}
Код находится в объекте (symbol) на втором кадре. Выносил его за пределы объекта (т.е. непосредственно в кадр) разницы так же нет.
Если устанавливаю загрузчик в первом кадре, то все нормально работает, проходит 100% загрузки, потом переход к основному мувику.
А если устанавливаю его во втором кадре (а первый к примеру пустой), то доходит до второго кадра, висит полоска загрузки с надписью 0% (то что по умолчанию) и ничего не происходит.
Добавлено через 20 минут
Я понял в чем дело - при быстрой загрузке вся флешка успевает прогрузиться в первом кадре.
Поэтому перед запуском загрузчика надо проверять загружена уже флешка или нет.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.