Давайте обратимся к листингу метода validateProperties из класса mx.core.UIComponent из Flex 3 (Flex 4) SDK
public function validateProperties():void
{
if (invalidatePropertiesFlag)
{
commitProperties();
invalidatePropertiesFlag = false;
}
}
Мой вопрос:
Почему грязный флаг invalidatePropertiesFlag сбрасывается после commitProperties вызова, но не до этого вызова?
Я полагаю, это потому что:
1) просто вопрос жизни ставить грязный флаг в конце блока IF;
2) Если код в commitProperties повышает RTE, у нас все еще будет шанс выполнить код в commitProperties во время воспроизведения следующего кадра в Flash Player, и на этот раз, возможно, код будет не бросай RTE.
Причина, по которой я задаю этот вопрос, заключается в следующем:
Если код в commitProperties попытается сделать недействительным какое-либо другое свойство UIComponent , используя грязный флаг и invalidateProperties вызов аннулирования, тогда этот вызов аннулирования будет не может быть добавлено в mx.managers.LayoutManager.invalidatePropertiesQueue , поскольку флаг грязного состояния invalidatePropertiesFlag еще не был сброшен до вызова commitProperties.