我的文字动画完美无缺,但不重复。我怎么重复这个? 对不起,我不太了解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)
答案 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
}