2010-05-11 105 views
0

我的文字動畫效果完美,但不重複。我如何得到這個重複? 對不起,我不知道Flash那麼好,但我只是想讓它一遍又一遍地播放。謝謝。重複文字動畫,as3

var myArray:Array = ["Big", 
        "Holiday", 
        "Sale", 
        "Buy", 
        "Now", 
        "And", 
        "Save"]; 
Timer 
var tm:Timer = new Timer(500,0); 
tm.addEventListener(TimerEvent.TIMER, countdown); 
function countdown(event:TimerEvent) { 
if (myArray.length>0){ 
tx.text = myArray.shift(); 
} 
} 
tm.start(); 

我想這

if (++myArray.length % 10 == 0) 

回答

2

簡單的解決方案:

myArray.push(tx.text = myArray.shift()); 

但sharvey的解決方案是signifficantly更好。它會像這樣工作:

var myArray:Array = ["Big", 
        "Holiday", 
        "Sale", 
        "Buy", 
        "Now", 
        "And", 
        "Save"]; 
var tm:Timer = new Timer(500,0); 
var index:int = 0; 
tm.addEventListener(TimerEvent.TIMER, countdown); 
function countdown(event:TimerEvent) { 
    tx.text = myArray[index]; 
    index = (index + 1) % myArray.length;//increment and "wrap around" 
} 
tm.start(); 
+0

'第一個運行但顯示null ref,第二個完美。謝謝 – pixelGreaser 2010-05-11 21:20:56

3

而是移()從你的陣列荷蘭國際集團的東西,保持你在(0,在第一),並且在倒數增加它的指數,模長度陣列。

+0

if(++ myArray.length%10 == 0)我試過這個,但是它說text必須是非null。你有沒有這樣的例子。 – pixelGreaser 2010-05-11 17:33:08

+1

這10個來自哪裏,似乎只有7個字在該陣列。你也不能像這樣改變array.length屬性。 – sharvey 2010-05-11 18:53:48

1

意味着什麼sharvey類似於這樣:

var myArray:Array = ["Big", 
        "Holiday", 
        "Sale", 
        "Buy", 
        "Now", 
        "And", 
        "Save"]; 
var tm:Timer = new Timer(500); 
tm.addEventListener(TimerEvent.TIMER, countdown); 
function countdown(event:TimerEvent) { 
    tx.text = myArray[(tm.currentCount-1)%myArray.length]; 
} 
tm.start(); 

我們從tm.currentCount減去1使用數作爲數組索引(0爲主),然後使用模數(%)將循環計數「循環/約束」到數組的長度。此外,計時器現在運行'永遠'。

我們都在說同樣的事情稍微不同的方式:)

+0

這很好,我現在明白了。 – pixelGreaser 2010-05-11 21:21:45

1

嘿,我不想成爲一個大掃大家的興,但不會像這樣通過使用Flash的時間軸得到更好的解決呢?即在Flash本身創建一個循環動畫?這樣你就可以將它導出到動作腳本中,並將動畫作爲孩子添加到代碼中。

var anim:MyOffensiveAnimation = new MyOffensiveAnimation(); 
addChild(anim); // that's it, animation starts playing 

或者更好的是,將它添加到任何影片剪輯應該在。

爲了記錄在案,不過,我真的很喜歡back2dos的「簡單的解決方案」。

+0

謝謝,我仍然使用時間軸動畫。 – pixelGreaser 2010-05-13 13:09:16

+0

嗯,這是很好的知道!有時候我發現我很想用時間軸動畫更適合的代碼,就是這樣。乾杯! – aaaidan 2010-05-19 05:26:06

0
// OP's Timer-related code ommitted 
var i:int = 0; 
function countdown(e:Event) { 
    tx.text = myArray[i]; 
    i = (i+1) % myArray.length; // resets i to zero when it gets to the size of the array 
}