我意识到这是一个非常古老的问题。然而,考虑到谷歌搜索flex 4 circular motion
将此线程作为第一个结果返回,我认为做出小贡献可能是值得的。
Robusto的解决方案确实有效 - 如果您不介意自己处理动画更新。另一方面,如果你想使用spark.effects.Animate
,那么使用正弦消除可以完成同样的事情。
<s:Sine id="cosine" easeInFraction="0.0" />
<s:Sine id="sine" easeInFraction="1.0" />
easeInFraction
属性指定缓动的哪部分花费在加速。对于正弦曲线,这是用来爬上正弦曲线的部分。通过将这个分数设置为0.0
,easer从曲线的顶部开始,变成余弦。我认识到主序列有点冗长,你可能想要创建一个新的组件来扩展spark.effects.Sequence
类,而不是在你的主应用程序中使用这个,但这只是为了给一般的应用程序提供一个新的组件。想法):
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955" minHeight="600"
applicationComplete="move_circle.play([circle])">
<fx:Declarations>
<fx:int id="mid_x">500</fx:int>
<fx:int id="mid_y">300</fx:int>
<fx:int id="radius">200</fx:int>
<s:Sine id="cosine" easeInFraction="0.0" />
<s:Sine id="sine" easeInFraction="1.0" />
<s:Sequence id="move_circle" repeatCount="0">
<s:Parallel>
<s:Animate easer="{cosine}">
<s:SimpleMotionPath property="x" valueTo="{mid_x + radius}" />
</s:Animate>
<s:Animate easer="{sine}">
<s:SimpleMotionPath property="y" valueTo="{mid_y}" />
</s:Animate>
</s:Parallel>
<s:Parallel>
<s:Animate easer="{sine}">
<s:SimpleMotionPath property="x" valueTo="{mid_x}" />
</s:Animate>
<s:Animate easer="{cosine}">
<s:SimpleMotionPath property="y" valueTo="{mid_y + radius}" />
</s:Animate>
</s:Parallel>
<s:Parallel>
<s:Animate easer="{cosine}">
<s:SimpleMotionPath property="x" valueTo="{mid_x - radius}" />
</s:Animate>
<s:Animate easer="{sine}">
<s:SimpleMotionPath property="y" valueTo="{mid_y}" />
</s:Animate>
</s:Parallel>
<s:Parallel>
<s:Animate easer="{sine}">
<s:SimpleMotionPath property="x" valueTo="{mid_x}" />
</s:Animate>
<s:Animate easer="{cosine}">
<s:SimpleMotionPath property="y" valueTo="{mid_y - radius}" />
</s:Animate>
</s:Parallel>
</s:Sequence>
</fx:Declarations>
<s:Ellipse id="circle"
x="{mid_x}" y="{mid_y - radius}"
width="100" height="100">
<s:fill>
<s:SolidColor color="#000000" />
</s:fill>
</s:Ellipse>
</s:Application>
老实说,我没有时间来测试这个,但它看起来完全像我在寻找,接受。 – Andrey 2012-06-21 15:28:16