Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Visible или removeChild? (http://www.flasher.ru/forum/showthread.php?t=206901)

Godwarlock 12.03.2014 18:47

Visible или removeChild?
 
В общем столкнулся с одним вопросом. Есть например в игре две локации. При переходе в другую, предыдущая либо удаляется со сцены, а потом при переходе обратно заново создается при помощи addChild, либо можно прописать visible - результат тот же. Как правильнее все таки будет и производительней? Скрывать при помощи visible или удалять?

Dukobpa3 12.03.2014 18:59

Цитата:

заново создается при помощи addChild
Хорошо сказал :)

Ну возьмите да померяйте. Стопицот раз скрыть показать и стопицот раз адд/ремув.
Че там замеры покажут.
На процессоре меньше сказывается визибл. Для памяти лучше удалять. Тут уж смотря на чем экономить собрались и что оптимизировать.

caseyryan 12.03.2014 19:09

Цитата:

Для памяти лучше удалять
Как это подействует на память? Объект просто в дисплей листе не будет показываться, а в памяти-то он так и будет болтаться

MikroAcse 12.03.2014 19:10

Ну для частых действий подходит visible.
Но в вашем случае лучше addChild, так как происходит смена локации.

Dukobpa3 12.03.2014 19:31

Цитата:

Объект просто в дисплей листе не будет показываться
Про память загнал, простите.
В любом случае если это целая локация то надо ей придумать какой-то грамотный дестрой. А визибл или адд-ремув уже не так критично. Но если локация будет дестроиться, то с визиблом могут возникнуть проблемы.

caseyryan 12.03.2014 20:00

Цитата:

Сообщение от MikroAcse (Сообщение 1161592)
Ну для частых действий подходит visible.
Но в вашем случае лучше addChild, так как происходит смена локации.

Очень весомый аргумент :D
Цитата:

В любом случае если это целая локация то надо ей придумать какой-то грамотный дестрой.
Согласен.
Но если уж он выбирает именно между removeChild() и visible, то в этом случае я бы выбрал visible.
Эффект тот же, а код будет короче и не надо будет проверять parent перед удалением. Про какие-то микроразличия в производительности при таком подходе и говорить не стоит) Это явно не будет самым слабым звеном в такой игре))

Godwarlock 12.03.2014 20:41

Цитата:

Эффект тот же, а код будет короче
В моем случае, код короче не становится))
Код AS3:

removeChild(Locations._space[i]);

Код AS3:

 Locations._space[i].visible = false;

Спасибо всем за ответы)

caseyryan 12.03.2014 22:45

Цитата:

В моем случае, код короче не становится))
А что если removeChild уже был вызван, и вызовется повторно, когда parent == null? Или если Locations._space[i].parent != this?
Вылетит эксепшен, и прога ляжет.
В случае с visible такого не произойдет, и дополнительных проверок не потребуется


Часовой пояс GMT +4, время: 01:22.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.