在Flex 4中动画子元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Flex 4中动画子元素相关的知识,希望对你有一定的参考价值。

任何人都知道如何在Flex 4中为布局的子元素的大小/位置设置动画?

例:

我有一个自定义布局的列表组件。我希望当我改变子元素的位置时,我希望它们能够动态移动到新的位置。

答案

目前还没有内置的方法,也没有计划在Flex 4中制作动画布局:/。

我为实现这一目标所做的是在布局中设置“setLayoutBoundsPosition”和“setLayoutBoundsSize”的设置。因此,不是为布局中的每个项创建“移动”和“调整大小”效果,而是实际设置宽度和高度,设置矩阵。然后确保布局不会再次失效(如果直接设置宽度/高度会发生这种情况),或者您可能开始获得无限循环。您可能需要做一些技巧才能使其正常工作(我没有使用Spark Effects正常工作,但使用Tweener / Tweenmax非常容易,因为它们有插件等,因此使用“setActualSize” “或”setLayoutBoundsSize“等)。

我使用TweenMax为布局设置动画,并且它们有一些插件可以让它变得简单。 TweenMax看起来比Spark Effects快3倍(20 fps vs 7fps),所以我会选择它。它看起来像这样,在你的布局的updateDisplayList方法。

TweenMax.to(child, duration, {setLayoutBoundsPosition:{x:childX * i, y:childY * i}});

另一答案

就像你通常会......

public override function updateDisplayList(width:Number, height:Number) : void {
    for (var i:uint = 0; i < target.numElements; i++)
    { 
       var resizeElement:Resize = new Resize(target.getElementAt(i) as IVisualElement);
       resizeElement.widthTo = 500;
       resizeElement.play();
    }
}

以上是关于在Flex 4中动画子元素的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序之view的flex布局(2)

如何将flex子元素堆叠在一起

解决flex布局导致子元素的宽度无效的问题

Flex子元素

弹性和flex布局

flex布局常见用法小结