![]() |
|
||||||||||
|
|
|
|||||
|
Давно заметил у скроллпейна стандартного (v2) то, что когда содержимое превышает содержимое окна перед появлением полосы прокрутки происходит где-то полсекунды непонятной ерунды - полоска добавляется не сразу, как надо, а спустя небольшое время, но заметное глазу.
Исходники компонентов я не видел, но что то мне подсказывает, что это инвалидатор трудится в автоматическом режиме. Это предисловие. Сам вопрос в следующем: за потребностью необходимо мне было написать свой скроллпейн, наследоваться от непонятных UIComponent`ов мне не хотелось, посему занаследовался сразу от Sprite`а (ну, почти. Это здесь не суть), написал, всё работает всё хорошо - кроме одной вещи. В конструктор своего пейна я передаю DisplayObject, если он ещё и Container - то добавляю на прослушку Event.ADDED и REMOVED - и меняю высоту-ширину пейна при каждом событии. Но вот проблема: если я добавляю сразу под 200 объектов, то он будет обновляться 200 раз, что не дело. Написал инвалидатор обычный, но хочется большего. Хочется автоматического, чтобы не надо было руками писать. На ум приходит только заводить таймер на очень маленькое число, чтобы обновиться сразу, как выйдем из текущего стека вызовов, но мне кажется, что это есть криво. Есть какие нибудь идеи? Реализовано ли это как нибудь в стандартом ScrollPane?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Так то так, но черт его знает в каком проекте я буду его ещё использовать, и мне не хочется вызывать какие-то ещё методы, кроме своих. Понимаю, что говорю глупости, но я не могу знать, кто ещё во всей флешке подписан на RENDER и какие проблемы это может вызвать. Да, и я понимаю, что не нужно писать код, который зависит от RENDER`а. У меня бзик.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Если кто-то еще и подписан на RENDER (что встречается не часто), то вероятность проблем от этого ничтожно мала. Только если:
1) в участке кода, который отвечает за перерисовку, происходит что-то влияющее на модель данных. Как бы бред =) 2) перерисовка сложная и вызывать ее просто так нет смысла. Как бы тоже не велика вероятность. Вероятности, как известно людям, посещающим уннивер, перемножаются. Так что я бы не парился. Ну а как второй вариант - то что ты сам уже написал.
__________________
...вселенская грусть |
|
|||||
|
Ну да, прав. Спасибо.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
В каком-то 9ом плеере при wmode, и ещё firsoff клялся, что при массовой подписке (якобы поэтому во флексе и делается это через один менеджер, я не проверял). Так что надёжнее подстраховываться задержкой в кадр, ну и всегда можо принудительно вызвать какой-нибудь validate***
|
|
|||||
|
Да, подписать на ENTER_FRAME мне тоже кажется хорошей идеей. По идее ведь я могу подписать на ENTER_FRAME, и обновить скроллпейн по первому вызову его хендлера?
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:09. |
|
|
« Предыдущая тема | Следующая тема » |
|
|