我有一个自定义视图堆栈,可在视图更改时自动应用幻灯片放入/滑出效果。当视图是轻量级时,一切都很顺利,但是当下一个视图需要大量渲染时,它会变得浑浊。 以下是代码的相关部分:
_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移动上一个视图的屏幕图像,该图像在动画开始时设置为可见,在结束时隐藏。
我尝试过一些黑客,例如在下一页从未显示过时延长动画的持续时间,但这并不十分通用,因为根据渲染要求,平滑过渡所需的持续时间会发生变化。
在其他编程语言中是否有任何方法强制下一页的布局/渲染过程仍处于视野之外?
由于
答案 0 :(得分:0)
Viewstack有一个creationPolicy属性。默认情况下,它设置为ContainerCreationPolicy.AUTO,这意味着视图将根据需要呈现。这解释了切换到视图时视图出现跳跃的原因。您可以将creationPolicy属性设置为ContainerCreationPolicy.ALL,它将强制ViewStack在加载之前预先渲染其所有视图。
这将解决您的问题,但请注意,它会增加应用程序的整体初始化时间,因为现在它将被强制提前渲染所有内容。