Проблемы перерисовки при прокрутке вручную во Flex - PullRequest
1 голос
/ 11 мая 2010

У меня есть два столбца: левый - холст, содержащий mx: Tree, а правый - холст, содержащий холст (для прокрутки) некоторых пользовательских спрайтов, которые идут вместе с узлами дерева слева. Я сделал правую прокрутку холста (горизонтальную и вертикальную) и хочу, чтобы вертикальная прокрутка также прокручивала левый холст так, чтобы узлы дерева совпадали с их представлениями справа.

Часть прокрутки работает нормально, и когда я встраиваю wmode = "window", проблем не возникает. К сожалению, клиент требует, чтобы динамический HTML иногда перекрывал Flash, и при использовании wmode = "opaque" или "transparent" возникают проблемы. Прокрутка по-прежнему работает сама по себе, но, похоже, Flash не перерисовывает ни Canvas должным образом. Холсты становятся несинхронными, и артефакты часто остаются на правой стороне.

Я ловлю событие прокрутки в правом столбце и обновляю позицию прокрутки в левом столбце следующим образом:

        public function onTimelineScroll(scrollEvent:ScrollEvent):void {
            leftColumn.verticalScrollPosition = rightColumn.verticalScrollPosition; 
        }

Удаление этого прослушивателя событий позволяет правильно рисовать правый столбец.

Любые предложения о том, как я могу это исправить? К сожалению, wmode = "window" не вариант. Возможно, есть лучший способ прокрутки?

Спасибо.

1 Ответ

0 голосов
/ 14 мая 2010

Ну, как бы ужасно ни было решение, мне пришлось реализовать взлом для решения моей проблемы.Я добавил:

rightColumn.horizontalScrollPosition = rightColumn.horizontalScrollPosition + 1;
rightColumn.horizontalScrollPosition = rightColumn.horizontalScrollPosition - 1;

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

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