Просмотр полной версии : Убрать перерисовку компонентов, с параметром visible=false
Наткнулся на такую штуку:
Если у мувиклипа параметр _visible = false, то флеш плеер его не перерисовывает, что в принципе логично. Но если этот мувиклип засунуть в другой, и задать его бате визибл ноль, то он невидимым то станет, но перерисовываться всёравно будет. Класная фича :) Все анимированные объекты в бате перерисовываются, несмотря на то что он visible=false.
Это я так чувствую, никак не исправить, только АС 3? или всё-же есть способ? Или может от версий флеш плеера зависит ? в восьмом тестировал.
cacheAsBitmap = true спасет.
terbooter
28.02.2011, 13:02
removeChild
function removeChild(mc:MovieClip){
mc.swapDepths(mc._parent.getNextHighestDepth());
mc.removeMovieClip();
}
:D
Hauts
cacheAsBitmap хорошая вещ, но в нашей проблеме не спасёт. Всёравно же он там перерисовываеться.
function removeChild(mc:MovieClip){
mc.swapDepths(mc._parent.getNextHighestDepth());
mc.removeMovieClip();
}
Ахах. Да видимо если только так, выгружать и поновай грузить. Это печально :(
Hauts
Немагу исходник открыть, у меня ток 8 версия флеша. Дома вечерком гляну. Или пересохрани плз, если есть возможность.
Вот в восьмерке.
Смысл в том, что слева и справа одинаковые блоки, только у каждого правого поставлено _visible = false и cacheAsBitmap = true.
26111
Вот в восьмерке.
Смысл в том, что слева и справа одинаковые блоки, только у каждого правого поставлено _visible = false и cacheAsBitmap = true.
26111
А ну так я тоже пробовал так делать, всёравно рисует. Если у тебя нет, значит дело во флеш плеере. Ты веть из более позднего запускаеш?
Да, я из ЦС3 и из standalone-плеера. Кстати последнее советую попробовать, по каким-то причинам во флэше часто бывает, что показываются нереальные регионы перерисовки (в свое время меня это очень напрягло). Так перерисовывался прямоугольник слева-сверху при программном добавлении и удалении мувиклипа.
Спс за совет. Я тут небольшой тест провёл:
for(i=1; i<=7000; i++){
attachMovie('sa','sa'+i,i);
clip = _root['sa'+i];
clip._x = random(550);
clip._y = random (400);
clip._visible = false;
clip.gotoAndPlay(random(20));
}
attachMovie('sa','sa',9000);
sa._x = 225;
sa._y = 200;
где sa - клип в библиотеке с простой анимацией.
Вобщем выяснилось, что никаких затрат на прорисовывание каждого отдельно клипа с нулевой видимостью - нет. Просто флеш плеер, расчитывая зону для перерисовки - учитывает и невидымые клипы (визибл ноль). Это совсем не существенно, и жить с этим можно. Причин для паники нет, всем спс :)
Хотя конечно, для приложений с большим размером, или фулл скрин, этот вопрос так и не решён.
Я бы код немножко поменял :)
for (var i = 0; i<=7000; i++) {
var clip = attachMovie('sa', 'sa'+i, i, {_x:Math.random()*550, _y:Math.random()*400});
clip._visible = false;
clip.gotoAndPlay(Math.floor(Math.random() * 20) + 1);
}
attachMovie('sa','sa',9000);
sa._x = 225;
sa._y = 200;
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.