重复文本动画,as3

时间:2010-05-11 17:04:44

标签: flash actionscript-3

我的文字动画完美无缺,但不重复。我怎么重复这个? 对不起,我不太了解Flash,但我只想让它一遍又一遍地玩。感谢。

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)

5 个答案:

答案 0 :(得分:3)

不是从数组中移位()移动东西,而是保持你所在的索引(最初为0)并在倒计时中递增它,以数组的长度为模。

答案 1 :(得分:2)

简单的解决方案:

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

但是Sharvey的解决方案显然更好。它的工作原理如下:

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();

答案 2 :(得分: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以使用count作为数组索引(基于0),然后使用modulo(%)将计数'循环/约束'到数组的长度。此外,计时器现在“永远”运行。

我们都以略微不同的方式说同样的事情:)

答案 3 :(得分:1)

嘿,我不想成为一个大派对,但是使用Flash的时间轴会不会更好地解决这个问题?即在Flash中创建一个循环动画?这样你就可以将它导出到actionscript并在你的代码中将动画添加为子项。

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

或者更好的是,将它添加到它应该在的任何MovieClip中。

但是,为了记录,我真的很喜欢back2dos的“简单解决方案”。

答案 4 :(得分: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
}