Как сделать так, чтобы Flash не отображал объект на сцене? - PullRequest
0 голосов
/ 04 октября 2008

Это обсуждение началось здесь , но я подумал, что было бы неплохо получить окончательный ответ ...

Итак, допустим, у вас есть MovieClip на сцене (или UIComponent для аудитории Flex) - что нужно сделать, чтобы сделать так, чтобы пользователь не мог видеть объект, а также чтобы AVM2 не ' t даже учитывать это при рендеринге сцены для пользователя?

Я всегда думал, что ответом было установить visible = false, но есть аргумент, что объект должен размещаться за пределами Стадии (например, x = 2000, который выглядит как взломанная IMO). Кто-нибудь знает реальный ответ?

РЕДАКТИРОВАТЬ: Я полагаю, что необходимость иметь Flash не визуализировать элемент будет способствовать производительности.

Ответы [ 5 ]

3 голосов
/ 07 октября 2008

Как уже отмечалось в других ответах, "хак" для перемещения клипов за пределы сцены больше не нужен. Однако установка visible = false; - это , а не - это разумно, если важна производительность. Клипы, которые являются частью списка отображения, но настроены как невидимые, могут по-прежнему вызывать значительные накладные расходы на рендеринг, если их достаточно. Если вы удалите их из списка воспроизведения с помощью removeChild(), они не потребуют дополнительных затрат на рендеринг (хотя они все еще занимают память).

2 голосов
/ 07 октября 2008

Да, как сказал дизайн, просто удалите его из списка отображения:

var s:MovieClip = new MovieClip();
s.lineStyle(1, 0xFFFFFF);
addChild(s);//shows in moviea 
removeChild(s);//removes from display list, but you still have a reference to it

Я не проверял это, но оно должно дать вам общее представление.

микрофон

2 голосов
/ 04 октября 2008

Хак для Flash 8 (Actionscript 2) или ниже. При обновлении до Actionscript 3 и Flex 2/3 достаточно установить свойство visible.

1 голос
/ 05 октября 2008

Полное удаление из списка отображения (removeChild (), removeChildAt () и т. Д.). Пока вы фактически не установите ссылку на MovieClip на «null», она все равно останется в памяти и может быть повторно добавлена ​​в список отображения, когда она вам понадобится снова (addChild (), atChildAt () и т. Д. .)

1 голос
/ 04 октября 2008

Если вы используете Flex и его систему разметки контейнеров, свойство includeInLayout в классе UIComponent также полезно, когда вы не хотите что-либо отображать: оно указывает, нужно ли учитывать фактор компонент при измерении макета.

...