PDA

Просмотр полной версии : События MovieClipLoader'а


qazwsx
24.04.2008, 13:42
Не понимаю почему событие onLoadComplete происходит раньше чем onLoadInit...

function recload(n:Number, cllist:Array):Void{
var ml:MovieClipLoader = new MovieClipLoader();
var ls:Object = new Object();
ls.onLoadStart = function(){

trace("start: "+n);
}

ls.onLoadInit = function(obj:MovieClip):Void{
trace("init: "+n);
};

ls.onLoadComplete = function(obj:MovieClip):Void{
trace("complete: "+n+' ,'+cllist.length);
n++;
if (n != cllist.length) {
recload(n, cllist);
} else {
trace("all");
}
};
ml.addListener(ls);
ml.loadClip("******" + cllist[n], cload);
}

recload(0, [0, 1, 2, 3, 4, 5, 6]);

Результат трейса

start: 0
complete: 0 ,7
init: 1
start: 1
complete: 1 ,7
init: 2
start: 2
complete: 2 ,7
init: 3
start: 3
complete: 3 ,7
init: 4
start: 4
complete: 4 ,7
init: 5
start: 5
complete: 5 ,7
init: 6
start: 6
complete: 6 ,7
all
init: 7

Или понимаю?
onLoadInit происходит кагда ролик загружен и выполнил свой первый кадр? Или кагда он загрузил первый кадр...?

iNils
24.04.2008, 13:49
onLoadComplete - когда файл загружен
onLoadInit - когда загруженный файл проинициализирован

qazwsx
24.04.2008, 13:54
Да, понятно, а уже недели 2 думаю в чем же дело %). И только щас заметил что инит после комплита идет...

alexsab
21.05.2008, 16:23
вопрос в тему,
а как можно обойти onLoadInit вообще, ну ненужно мне чтобы при предзагрузке swfки он еще и первый кадр ее проигрывал, возможно вообще такое?
или как после onLoadComplete сразу же удалить мувик!?
и вроде бы я вот сейчас могу сам ответить на свой вопрос

a_mc.loadClip_func = function(param_array) {
var _clip = param_array[0]
var _mc = param_array[1]
var _func = param_array[2]

var reel_mcl = new MovieClipLoader();
var rls = new Object();

//этот загрузчик у меня используеся как для предзагрузки,
//так и для дальнейшего показа их в процесее,
//_loader показывает все загружены или это и есть предзагрузка
var _loader = a_mc.reelLoading != a_mc.reelCount ? true : false;

rls.onLoadComplete = function(target_mc:MovieClip) {
var loadProgress:Object = reel_mcl.getProgress(target_mc);
if(_loader){
a_mc.reelLoading++;
removeMovieClip(target_mc)
reel_mcl.removeListener(rls);
a_mc[_func[0]](_func[1]);
} else {
}
};
if(!_loader){
rls.onLoadInit = function(target_mc:MovieClip) {
trace("Movie clip = "+target_mc+" is now initialized");
a_mc[_func[0]](_func[1]);
};
}

reel_mcl.addListener(rls);
reel_mcl.loadClip(_clip, _mc)
}
//вызов функции загрузки
a_mc.loadClip_func(["url", __куда, ["функция_позле_загрузки", null]]);

и компилица, но! если просто скомпилить, то зависает, вызовается ошибка, и закрывается весь флеш!!!
а работает оно только под debug-ом.... и нигде ошибок не вызывает!!!...
а вот если не исключать onLoadInit, т.е.:

...
rls.onLoadComplete = function(target_mc:MovieClip) {
var loadProgress:Object = reel_mcl.getProgress(target_mc);
if(_loader){
} else {
}
};
rls.onLoadInit = function(target_mc:MovieClip) {
trace("Movie clip = "+target_mc+" is now initialized");
a_mc.reelLoading++;
a_mc[_func[0]](_func[1]);
};
...

то все прекрасно работает!
почему!?

qazwsx
22.05.2008, 11:24
В смысле тебе ненужно чтобы первый кадр проигрывался onLoadInit Это иницилизация swf'ки т.е она готова к работе, до этого момента ты из нее никаких данных не можеш получить >_>, не логично...

alexsab
22.05.2008, 14:10
ничего я не хачу ни от кого получить... все просто до безумия:
у меня есть главная флешка, которая грузит в себя все (xml, картинки и другие SWF файлы!), и все это происходит в preloader-е, так вот все хорошо, но первый кадр загруженых SWFок проигрывается!!! а мне это в прелоадере не нужно совсем... => выход, удалить загруженый мувик сразу после onLoadComplete
еще раз повторю, мне просто нужно чтобы в ПРЕДзагрузке SWF не проигрывали свой первый кадр!
в аттаче видео как это все происходит.......

qazwsx
22.05.2008, 14:16
onLoadStart = function(obj:MovieClip){
obj._visible = false;
}

alexsab
22.05.2008, 15:06
да я не скрыть его хачу....
даже если скроешь загруженый SWF файл, он всеравно первый фрейм свой проиграет....!
а то что в видео мигает, это я просто не отключил.... у меня он грузит все в контейнер за 30000 пикселей от главной сцены....
мне ненужно чтобы он КОД первого кадра выполнял, вот как!, а объекты, [удалено] пускай покаказывает...

qazwsx
22.05.2008, 15:22
Так он его выполняет кагда происходит onLoadInit :)

alexsab
22.05.2008, 15:29
onLoadInit выполняется после того как отъиграет первый кадр!
хелп флеша:

Как только весь загружаемый файл будет записан на диск вызывается MovieClipLoader.onLoadComplete.
После того как будут выполнены комманды первого фрейма загруженного файла, вызывается MovieClipLoader.onLoadInit.
и трейс это подтверждает...
а если удалить мувик после onLoadComplete, то собств и первый кадр не проигрывается и onLoadInit не нужно вообще, но это вызывает ошибку при компиляции...

qazwsx
22.05.2008, 15:47
И я о томже

alexcon314
22.05.2008, 17:15
alexsab, не нарушайте правила форума. п.1