Flex: лучший способ избежать причуд слайд-перехода - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть собственный видовой стек, который автоматически применяет эффект вставки / выдвижения при изменении вида. Все идет гладко, когда представления облегчены, но становится нервным, когда следующий вид требует интенсивного рендеринга. Вот соответствующие части кода:

        _showEffect  = new Parallel();
        _contentMove = new Move();
        _imageMove     = new Move();
        _showEffect.addChild(_contentMove);
        _showEffect.addChild(_imageMove);
        _showEffect.addEventListener(EffectEvent.EFFECT_END, effectEndHandler);

Я применяю параллельный эффект к showEffect каждого вида:

        vis.setStyle("showEffect", _showEffect);

Я определяю свойство перемещений в зависимости от направления анимации, здесь слева (где _views - мой постоянный видовой стек в пользовательском компоненте):

                _contentMove.xFrom = _views.width;
                _contentMove.xTo = 0;
                _contentMove.yFrom = 0;
                _contentMove.yTo = 0;

                _imageMove.xFrom = 0;
                _imageMove.xTo = -_views.width;
                _imageMove.yFrom = 0;
                _imageMove.yTo = 0;

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

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

Нет ли способа, как в других языках программирования, заставить процесс макета / рендеринга следующей страницы, пока она еще не видна?

Спасибо

1 Ответ

0 голосов
/ 28 февраля 2011

Viewstack имеет свойство creationPolicy. По умолчанию это значение равно ContainerCreationPolicy.AUTO, что означает, что представления отображаются по мере необходимости. Это объясняет, почему при переключении на него вид выглядит скачкообразным. Вы можете установить для свойства creationPolicy значение ContainerCreationPolicy.ALL, и оно заставит ViewStack предварительно отобразить все свои представления перед их загрузкой.

Это решит вашу проблему, но учтите, что это увеличит общее время инициализации вашего приложения, потому что теперь оно будет вынуждено отрисовывать все заранее.

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