Когда пришло время сбросить грязный флаг "invalidatePropertiesFlag" в среде недействительности Flex? - PullRequest
1 голос
/ 24 декабря 2009

Давайте обратимся к листингу метода 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.

1 Ответ

1 голос
/ 25 декабря 2009

В соответствии с потоком выполнения логически выглядит «пометить как не измененный» (флаг сброса) только после завершения обработки и установки состояния в допустимое состояние. Если какое-то другое свойство должно быть аннулировано с использованием того же флага, то для этого должны быть отдельные флаги.

Обновление: Извините за неправильное понимание реальной проблемы. Я должен согласиться с вами здесь, что в случае invalidatePropertiesFlag это должно быть установлено в false перед вызовом commitProperties. Между тем вы должны вызывать методы аннулирования через что-то вроде callLater().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...