2012-02-13 50 views
1

我正嘗試用矩形創建動畫。 我想矩形移動從x = 150到x = 50,然後回到150,等等。用S移動形狀:移動MXML

目前我只能將矩形向前移動,並在移動100px後停止。

任何想法如何創建循環?

這就是我想出的。我知道的不多。

<s:Move id="moves" 
target="{rect2}" 
xBy="-150" 
duration="1000" 
easer="{sineEasing}"/> 

回答

2

嘗試這樣的事:

<mx:Sequence id="seq" repeatCount="0"> 
    <s:Move 
     target="{rect}" 
     xBy="150" 
     duration="1000" 
     easer="{sineEasing}"/> 
    <s:Move 
     target="{rect}" 
     xBy="-150" 
     duration="1000" 
     easer="{sineEasing}"/> 
</mx:Sequence> 

正如你可以看到這裏的主要思想是利用Sequence效應強行使兩個Move動畫連續執行,然後通過設置循環這個Sequence效果其repeatCount財產至0

+0

正是我一直在尋找,已經錯過了序列和repeatcount。再次感謝您 – Dymond 2012-02-13 18:45:54

1

我會建議使用tweenlite動畫庫,而不是使用Flex和MXML的內置動畫選項進行動畫。 Tweenlite有更多的選擇,並且非常易於使用。

通過下面的代碼,您可以看到庫的工作原理。該函數將Sine.easeIn在1秒的時間內緩慢移動到位置65,117。

TweenLite.to(rect, 1, {x:65, y:117, ease:Sine.easeIn}); 

如果再使用一些額外的參數,你可以創建一個循環,就像這樣:

handleAnimation(); 

private function handleAnimation(e:Event=null):void 
{ 
    var positionTo:Int = (rect.x == 150) ? 50 : 150; 
    TweenLite.to(rect, 1, {x:positionTo, ease:Sine.easeIn, onComplete:handleAnimation}); 
} 
+0

我需要稍後嘗試一下,handleAnimation需要寫入AS代碼中?我是對的?還沒有弄清楚還沒找到那個代碼:) – Dymond 2012-02-13 18:46:54

+0

這的確是actionscript。代碼應寫入以下mxml之間:<![CDATA [您的代碼]]> 2012-02-13 19:01:39