PDA

Просмотр полной версии : Интересная проблема с removeMovieClip


NewFolder
27.02.2007, 14:08
Такая проблемка: во флеш из вне подгружаются мувики, на каждую подгрузку из библиотеки атачу прелоадер. При загрузке мувика прелоадер удаляю. Все бы ничего, но иногда бывают моменты, когда прелоадер видится, но не удаляется.

Вот код функции. Все, что закоментированое - разные варианты, которые я пробовал.



function removePreloader(mc:MovieClip){
trace("try to remove " + mc.preloader);
if (!mc.preloader){
return;
}
//removeMovieClip(mc.preloader);
mc.preloader.onEnterFrame = function(){
trace("OnEnterFrame " + this);
removeMovieClip(this);
//this.removeMovieClip();
}
clearInterval(mc.loaderInt);
}


Трейсит такую штуку
try to remove _level0.loader3
OnEnterFrame _level0.loader3
OnEnterFrame _level0.loader3
OnEnterFrame _level0.loader3
OnEnterFrame _level0.loader3
...

Что это может быть? Помогите, плиз

etc
27.02.2007, 14:23
Для начала this.removeMovieClip(), а ещё delete this.onEnterFrame;

CorC
27.02.2007, 14:23
фиг знает что это :)
а так?
mc.preloader.removeMovieClip();

NewFolder
27.02.2007, 14:24
Я так делал, не помогло. А onEnterFrame сам удалится, после удаления мувкиа

NewFolder
27.02.2007, 14:26
фиг знает что это :)
а так?
mc.preloader.removeMovieClip();

Не помогает :(

etc
27.02.2007, 14:27
А мувик preloader небось руками отрисован?

NewFolder
27.02.2007, 14:30
А мувик preloader небось руками отрисован?

Дизайнер рисовал. Там ничего особенного: фон, полосочка под маской и надпись "Loading..."

CorC
27.02.2007, 14:34
А мувик preloader небось руками отрисован?
думаю что свапать не надо
на каждую подгрузку из библиотеки атачу прелоадер
исходник не покажете? :)

etc
27.02.2007, 14:36
Думаю, что надо сначала выносить на положительную глубину.

NewFolder
27.02.2007, 14:41
думаю что свапать не надо

исходник не покажете? :)

В начале загрузки мувика создаю прелоадер и ставлю в центр


function onStartLoad(targetMC:MovieClip, param:Object){
//Show preloader
var loaderMC:MovieClip = _root.attachMovie("preloader-small", "loader" + lastLoaderId, _root.getNextHighestDepth());
trace("Create loader " + loaderMC);
loaderMC.onEnterFrame = function(){
this._x = (_root.contentW - this.bgMov._width) / 2;
this._y = (_root.contentH - this.bgMov._height) / 2;
delete this.onEnterFrame;
}
lastLoaderId++;
targetMC.preloader = loaderMC;
}


При окончании загрузки делаю все свои дела и пытаюсь удалить прелоадер

function onEndLoad(targetMC:MovieClip, param:Object){
loadedMCs[targetMC._name] = targetMC;

//Remove this clip from load stack
removeFromStack();
targetMC.loaderInt = setInterval(removePreloader, 100, targetMC);

//Load next block
if (nowLoading.length){
loadClip(nowLoading[0]);
}
}

NewFolder
27.02.2007, 15:00
Добавил одну строчку кода

mc.preloader.swapDepths(10);
mc.preloader.removeMovieClip()


Вроде заработало! Еще потестю, посмотрю как будет себя вести.
Спасибо всем ГРОМАДНОЕ :)

etc
27.02.2007, 15:02
Укажи глубину руками.

А, хотя, как и следовало ожидать, глубина была неверной.

NewFolder
27.02.2007, 16:21
Странно, написал пост, а его нет %(

Ну ладно, мне спасибо не жалко сказать еще раз :)
Сделал свап глубины и все заработало.
Спасибо большое!!!