Flex:避免幻灯片过渡怪癖的最佳方法

时间:2011-02-28 10:32:24

标签: flex

我有一个自定义视图堆栈,可在视图更改时自动应用幻灯片放入/滑出效果。当视图是轻量级时,一切都很顺利,但是当下一个视图需要大量渲染时,它会变得浑浊。 以下是代码的相关部分:

        _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 :(得分:0)

Viewstack有一个creationPolicy属性。默认情况下,它设置为ContainerCreationPolicy.AUTO,这意味着视图将根据需要呈现。这解释了切换到视图时视图出现跳跃的原因。您可以将creationPolicy属性设置为ContainerCreationPolicy.ALL,它将强制ViewStack在加载之前预先渲染其所有视图。

这将解决您的问题,但请注意,它会增加应用程序的整体初始化时间,因为现在它将被强制提前渲染所有内容。