2013-05-08 2 views
1

Могу ли я установить «видимое» свойство фрагмента ролика в каждом кадре или проверить текущее состояние свойства «видимое», чтобы решить, нужно ли его обновлять?AS3 Настройка видимого свойства MovieClips

Устанавливает ли «видимое» свойство на то же значение дешево или нет? Укажите источник.

+3

Я считаю, что существует базовый код, который просто проигнорирует изменение, если оно будет таким же, как и то, что уже установлено, поэтому выбивайте себя. –

+0

Некоторый источник был бы хорош - я обеспокоен тем, что может быть некоторый «грязный флаг», который задается при настройке видимого свойства – Schifty

+0

Я бы не стал беспокоиться об этом в чистой Flash. Я не считаю, что это ментальная модель, используемая инженерами Flash (Flex, абсолютно, беспокойство). –

ответ

3

Это не имеет значения.

Свойство visible - это просто флаг, который установлен, а затем читается при следующем отображении DisplayList. Обновление его значения фактически не делает ничего, кроме как установить внутреннее свойство, используемое для рисования объекта на значение, которое вы поставляете. Вы можете изменять значение visible несколько раз за каждый кадр, и он будет работать одинаково.

В основном, когда вспышка пробегает все DisplayObjects, которые вы добавили к DisplayList, он проверяет коллекцию флагов и ценностей, которые каждый имеет, как x, y, alpha и visible. Он использует эти значения, чтобы определить, что делать с рисованием объекта. Когда вы делаете объект невидимым, все, что действительно происходит, это Flash, который пропустит этот объект и не попытается его нарисовать.

Для удобства, я бы просто придерживался, не имея if.

0

Я уверен, что есть исходный код, чтобы его не установить на то же значение, как уже упоминалось Эми, но если вы хотите быть абсолютно уверены, вы могли бы сделать это вместо:

if (!mc.visible) { 
    mc.visible = true; 
} 

и сделать напротив, если вы устанавливаете его как ложное.

if (mc.visible) { 
    mc.visible = false; 
} 

Это изменит значение, если оно еще не установлено на это значение. Вы, очевидно, хотите убедиться, что они никогда не находятся рядом друг с другом, потому что ваш компонент будет всегда в конечном итоге с visible = false.

+0

В настоящее время я использую «if (mc.visible! = MyValue) mc.visible = myValue;» – Schifty

+0

Это делает ваш код излишне сложным и подробным. –

+0

@AmyBlankenship. Это значит, но это не позволит установить настройку (я не знал о том, как на самом деле была установлена ​​видимая настройка, прежде чем Марти Уоллес отправил свой ответ), о чем спросила Шифте. –

Смежные вопросы