Просмотр полной версии : Интересная проблема с 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
...
Что это может быть? Помогите, плиз
Для начала this.removeMovieClip(), а ещё delete this.onEnterFrame;
фиг знает что это :)
а так?
mc.preloader.removeMovieClip();
NewFolder
27.02.2007, 14:24
Я так делал, не помогло. А onEnterFrame сам удалится, после удаления мувкиа
NewFolder
27.02.2007, 14:26
фиг знает что это :)
а так?
mc.preloader.removeMovieClip();
Не помогает :(
А мувик preloader небось руками отрисован?
NewFolder
27.02.2007, 14:30
А мувик preloader небось руками отрисован?
Дизайнер рисовал. Там ничего особенного: фон, полосочка под маской и надпись "Loading..."
А мувик preloader небось руками отрисован?
думаю что свапать не надо
на каждую подгрузку из библиотеки атачу прелоадер
исходник не покажете? :)
Думаю, что надо сначала выносить на положительную глубину.
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()
Вроде заработало! Еще потестю, посмотрю как будет себя вести.
Спасибо всем ГРОМАДНОЕ :)
Укажи глубину руками.
А, хотя, как и следовало ожидать, глубина была неверной.
NewFolder
27.02.2007, 16:21
Странно, написал пост, а его нет %(
Ну ладно, мне спасибо не жалко сказать еще раз :)
Сделал свап глубины и все заработало.
Спасибо большое!!!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.