Слушать событие Render хорошо или плохо? - PullRequest
1 голос
/ 14 марта 2011

Я пытаюсь добиться расширения компонента во Flex и добавления изображения, которое будет отображаться ВСЕГДА рядом с ним. (Изображение не может быть добавлено внутри (addElement / addChild) элемента управления)

Я рассчитал координаты элемента управления и сумел расположить изображение всегда рядом с ним без каких-либо проблем в событии Creation_Complete. Но я заметил, что при изменении размера экрана и изменении положения элемента управления изображение остается в том же месте.

Итак, я прослушал событие Render и произвел расчет координат, чтобы поместить изображение рядом с элементом управления. Теперь это работает отлично.

Но проблема, с которой я сталкиваюсь, заключается в том, плохо ли прослушивание события Render для вычисления координат? Есть ли другое событие, которое менее часто запускается, чтобы выполнить мою работу?

Надеюсь, это ясно и спасибо заранее :)

Ответы [ 3 ]

3 голосов
/ 14 марта 2011

Вы говорите об изменении размера экрана, тогда вы также можете прослушать событие изменения размера (вне сцены) вместо события рендеринга (на изображении).

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

stage.addEventListener(Event.RESIZE, resizeListener);
1 голос
/ 16 марта 2011

Если вы расширяете компонент, вы можете попытаться использовать превосходный жизненный цикл компонентов Flex, переопределив метод updateDisplayList (), чтобы расположить компонент там, где вы считаете нужным, с учетом размера экрана, будет ли элемент видимым и т. Д.Конечно, вы можете захотеть внутренне подключиться к событию resize с помощью простой функции, которая будет вызывать только invalidateDisplayList (), убедившись в том, что никакие необходимые вызовы для репозиции не будут выполняться.Это метод / updateDisplayList () /, который вызывается только один раз на этапе рендеринга.Также для добавления нового элемента в расширенный компонент было бы разумно переопределить createChildren () для создания и добавления изображения.На этом этапе больше ничего не требуется, так как updateDisplayList () будет вызываться автоматически при добавлении / удалении дочернего элемента.

Объяснение жизненного цикла компонента - Это очень помогло мне: ")

1 голос
/ 15 марта 2011

В итоге я слушал Render один раз, как обходной путь, но если вы установите точку останова в обработчике Render, вы, вероятно, заметите, что она вызывается 1000 раз: я бы сказал, BAD.

Я быпредложить событие изменения размера, добавленное в тег приложения resize="application_resize(event);

...