2010-03-14 58 views
1

我意识到你可以使每个效果之一,设置相同的目标,并击中.play();,但这会产生奇怪的结果(acknowledged by Adobe, fixed in Flex 4)。如何在Flex 3中结合移动和旋转效果?

我试图让对象从屏幕顶部移动到底部,同时围绕它自己的中心旋转。当独立调用时,这两种效果都可以很好地工作。当一起调用时,对象总是围绕左上角旋转。我甚至试图把它们都放入<Parallel>标签中,但没有成功。有没有人想出一个解决方法?

+0

让我猜测,对象是文本对象吗? – Robusto 2010-03-15 02:27:14

+0

一个图像,但我听说过恐怖故事...我会说Flex 4不能马上就来,但我下载了Beta SDK,并且得到了一些吸盘,所以谁知道。 – Impirator 2010-03-16 23:31:10

回答

1

我发现了一个权宜之计。

(在我的OP和大卫在评论中提及)的问题,就是旋转的效果后完成一个完整的周期,如果它有一个repeatCount=0无限期地持续下去,这是originXoriginY价值得到了重新向登记(上,左)点,这使得整个外观摇摆不定。

因此,诀窍是不要让它完成一个完整的循环。如果你有

<mx:Image id="myImage" source="images/someImage.png" /> 
<mx:Rotate originX="{myImage.width/2}" originY="{myImage.height/2}" 
    angleFrom="0" angleTo="360" duration="2000" target="{myImage}" /> 

...那么你需要做的是一样的东西...angleTo="360*100"......duration="2000*100...

通过angleTo属性设置为非常高,您删除或之前,将永远不会完成一个旋转的效果重新启动它,因此不会丢掉originXoriginY,并且通过将duration乘以与angleTo相同的系数,您将保持您希望的相同旋转速度。

对大多数人来说,这可能像泥土一样清晰,但这对我来说是一个重大突破,所以我希望这可以为别人节省一些时间。

0

您需要在并行实例中包含Move和Rotate,以使它们同时工作。此外,为了获得围绕组件中心旋转的旋转效果,需要将originX和originY属性设置为目标中心,(originX和originY属性定义旋转中心点。)

examply以下工作完全正常:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
<mx:Image id='effectTarget' source="assets/waterfall.jpg" width="390" height="292" scaleContent="true" autoLoad="true"/> 
<mx:Parallel duration="5000" id="effectParallel"> 
    <mx:Move xFrom="0" xTo="500" yFrom="0" yTo="500" target="{effectTarget}"/> 
    <mx:Rotate originX="195" originY="149" angleFrom="0" angleTo="360" target="{effectTarget}"/> 
</mx:Parallel> 
<mx:Button x="856" y="27" label="Go" click="effectParallel.play()"/> 

+0

David,将Rotate上的'repeatCount'设置为0,以便它无限期地运行。对于我来说,在一次完整旋转360之后,'originX'和'originY'点将重置到图像的顶部左侧(注册点)。当然,我也做了一个'originX =“{effectTarget/2}”类型的交易来寻找中心,所以也许会有效果。 – Impirator 2010-03-16 23:29:00

+0

Err,这应该是'originX =“{effectTarget.width/2}”' – Impirator 2010-03-16 23:44:14

+0

当我重复一遍,旋转,旋转和移动,并行包装本身时,我仍然围绕中心点旋转。我认为你的约束力是导致问题的原因。在旋转图像时,组件的实际宽度和高度正在改变,以便对旋转后的图像进行合并,这样就会弄乱原点。尝试计算中心,为移动设置静态值并在开始效果前进行旋转,如果效果重复,则EffectEnd事件将值重置为静态数字。 – David 2010-03-23 17:07:23