2010-05-11 107 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 
}