Canvas 'verticalScrollPosition не может быть изменено в Flex - PullRequest
1 голос
/ 17 марта 2011

У меня странная проблема с verticalScrollPosition во Flex. У меня есть контент Canvas и обертка Canvas. Контент большой (5000px X 5000px), оболочка 800px X 800px.

public var wrapper:Canvas = new Canvas();
public var content:Canvas = new Canvas();
wrapper.addChild(content);
application.addChild(wrapper);

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

wrapper.verticalScrollPosition = A;
wrapper.horizontalScrollPosition = B;

Это работает нормально. Но! Если я установлю положение полосы прокрутки по умолчанию, когда холст будет завершен:

wrapper.addEventListener(FlexEvent.CREATION_COMPLETE, function(e:FlexEvent):void{
    wrapper.verticalScrollPosition = DEFAULT_A;
    wrapper.horizontalScrollPosition = DEFAULT_B;
});

Я больше не могу устанавливать вертикальную прокрутку:

wrapper.verticalScrollPosition = C;
trace(wrapper.verticalScrollPosition); // Outputs: DEFAULT_A

Таким образом, проблема существует, только если я установил положение по умолчанию, используя 'FlexEvent.CREATION_COMPLETE' Что я тут не так делаю?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 27 марта 2011

Я нашел проблему. Я прикрепил слушатель события к дочернему элементу оболочки. Когда я добавил слушателя к самой оболочке, он работает.

Итак, урок, который я усвоил: всегда отслеживайте события самого верхнего элемента пользовательского интерфейса, с которыми вам нужно работать.

0 голосов
/ 18 марта 2011

Я нашел ужасный обходной путь - я жду 1 микросекунду, чтобы установить состояние по умолчанию:

wrapper.addEventListener(FlexEvent.CREATION_COMPLETE, function(e:FlexEvent):void{
  setTimeout(
    function():void{wrapper.verticalScrollPosition = DEFAULT_A;},
    1
  );
});

Я думаю, мы можем согласиться, что это действительно ужасно. Как я могу сделать это лучше?

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