![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Jan 2009
Адрес: Северный островок дефолт-сити
Сообщений: 144
|
Сейчас занимаюсь переделкой одного проекта и возник такой вопрос:
надо отображать в одном спрайте различные формы. Какие плюсы и минусы у каждого из озвученных выше подходов (присваивать visible неактивной формы нулю или удалять её из списка отображаемых объектов)? Насколько я понимаю минус visible=0 в том что всё равно память хавается. Хотя поидее и при removeChild она тоже будет хаваться, если только не удалить все все ссылки на неактивную форму (а все все ссылки в моём случае не получиться наверное удалить). Минус removeChild лично для меня в том, что при попытке удалить ненужную форму, если она уже была удалена ранее, вылетает ошибка, в то время как visible = 0 никаких ошибок не вызывает само собой. Хотя надо стремиться к тому, чтобы таких ошибок небыло впринципе, сейчас мне легче работать с visible. Есть ли ещё какие-то другие различия между этими подходами? |
|
|||||
|
это два абсолютно разных метода, они не являются альтернативами друг-другу.
перед использованием removeChild можно делать проверку, чтобы не возникала ошибка. |
|
|||||
|
Проще try...catch
__________________
Дело не в тебе |
|
|||||
|
Banned
Регистрация: Sep 2009
Сообщений: 231
|
если имеется МувиКлип с анимацией или что-то перерисовываемое динамически, то visible = false не отменяет прорисовку каждого его кадра, однако если убрать из дерева отображения, то прорисовка просчитываться для этого объекта не будет.
|
|
|||||
|
Регистрация: Jan 2009
Адрес: Северный островок дефолт-сити
Сообщений: 144
|
Цитата:
За всевозможные варианты всем спасибо. Вчера тоже увидел в другом месте удаление через try и catch, до этого что-то и не догадывался о таком способе (не считая первоначального обучения, сам ещё ни разу не использовал try/catch )Но в этом проекте наверное пока оставлю через visible, там ещё других проблем ой-ой-ой ![]() |
|
|||||
|
Регистрация: May 2009
Сообщений: 220
|
Цитата:
Тоже интересовал этот вопрос. Нашел комп послабже моего и сделал тест, в котором: - динамически дабавил в дисплей лист 5000 спрайтов с приличными размерами. - далее через Timer сделал fps равное примерно 1000 в секунду (по номиналу). - на каждом "кадре" все спрайты меняли координаты. Сперва для всех спрайтов visible поставил в false и потестил. Результат для 200-т "кадров" - 1300 милисекунд. Затем поставил visible = true... В общем для 1-го "кадра" результат - 8100 примерно. Крайне сомнительно, что с visible = false отрисовка происходит. Однако, тот же тест, но без добавления спрайтов в дисплей лист действительно показал незначительный, но стабильно более быстрый результат. Соответственно, я педположил, что "разница" вызвана самим фактом нахождения в дисплэй-листе нежели значением visible. Тем не менее я основываюсь на результатах теста, а не на теории. И возможно где-то ошибаюсь в рассуждениях. Если так, то где ![]() UPD: а у меня "show redraw regions" не показывает отрисовку спрайтов. Последний раз редактировалось switcher!; 12.11.2009 в 13:31. |
|
|||||
|
Banned
Регистрация: Jun 2009
Сообщений: 298
|
я делаю так
|
|
|||||
|
Banned
Регистрация: Sep 2009
Сообщений: 231
|
|
|
|||||
|
Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
|
Arctic, не лучший метод. Не говоря уже о super =)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 13:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|