Правильно перерисовать UIComponent с помощью validateNow () - PullRequest
0 голосов
/ 20 апреля 2011

Я удаляю UIComponent, но его части в последний раз видны. Он перерисовывается только тогда, когда я перемещаю мышь или что-то еще. Я пытался сделать validateNow() на его родителя, пытался сделать setTimeout(validateNow, 100), но это не помогает. Когда я называю это setTimeout, кажется, что эти артефакты показываются реже, но это не решает проблему во всех случаях. Пожалуйста, подскажите кому-нибудь, чтобы прочитать о validateNow(), как это работает и как правильно делать эти вещи.

Код ниже:

protected var bubble: SpeechBubble;

// creation

bubble = new SpeechBubble();
map.addChild(bubble);

//...

// removing

bubble.visible = false;
map.removeChild(bubble);
map.validateNow();
setTimeout(map.validateNow, 100);

карта - это Google Map для Flex.

Ответы [ 3 ]

2 голосов
/ 20 апреля 2011

Причина, по которой это происходит, в том, что вы возитесь с логикой рисования Карт Google. Вам следует обратиться к руководству разработчика , предоставленному Google. В разделе элементов управления упоминается, что для создания пользовательского элемента управления необходимо расширить ControlBase.

1 голос
/ 20 апреля 2011

Возможно, вам придется инициировать аннулирование перед вызовом validateNow ().Вызов для проверки теперь заставляет код проверять, установлены ли какие-либо из флагов недействительности (свойства, список отображения или размер), а затем для каждого вызова соответствующий метод, чтобы исправить недействительность (commitProperties, updateDisplayList, measure), в вашем случае это звучиткак будто он просто не выполняет четкий вызов графики или перерисовывает его соответствующим образом, поэтому вам может потребоваться вызвать

bubble.invalidateDisplayList();
bubble.validateNow();

Также надеюсь, что одно из этих решений сработает для вас, вообще говоря, принудительное подтверждение в определенный момент времени неОбычно это хорошая идея, так как компоненты инфраструктуры должны вызывать соответствующую аннулирование и последующую валидацию в своем жизненном цикле, но я не могу сказать, что сам этого не делал :).

Shaun

0 голосов
/ 20 апреля 2011

Вы можете использовать includeInLayout свойство

bubble.visible = false;
bubble.includeInLayout = false;

Пример демонстрирует это свойство

Красота includeInLayout

надеждэто помогает

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