我一直在制作一个“幻灯片”,其中 4 个图像以随机顺序进行动画处理。
为了防止一个图像连续出现多个动画,例如连续 3 次,我写了一些逻辑。
我的问题:在所有 4 个图像都被动画化了几次之后(在我认为第二次清除查询“数组”之后),计时器变得疯狂,trace()
随机数以高序列率出现,而没有动画图像,看起来我认为令人毛骨悚然。
我的代码:
var myTimer:Timer = new Timer(2500);
myTimer.addEventListener(TimerEvent.TIMER, animate);
myTimer.start();
var array:Array = new Array();
var lastNum:int;
function animate(e:TimerEvent):void {
var num:int = getRandomNumber( 1, 4 );
trace( num );
if( array.indexOf( num ) < 0 && num != lastNum ) {
myTimer.delay = 2500;
if( num == 1 ) {
sideImg_start_1.play(); // comment this*
} else if( num == 2 ) {
sideImg_start_2.play(); // comment this*
} else if( num == 3 ) {
sideImg_start_3.play(); // comment this*
} else if( num == 4 ) {
sideImg_start_4.play(); // comment this*
}
array.push( num );
if( array.length == 4 ) {
array.splice(0, 4);
trace(" array cleared - " + array.length);
lastNum = num;
}
} else {
myTimer.delay = 100; // I've also tryed so make a higher delay
// like 500 but its the same problem...
}
}
function getRandomNumber( min:int, max:int ):int {
return Math.floor( Math.random() * ( 1 + max - min ) ) + min;
}
stop();
所以,伙计们,感谢您的所有回答和帮助:D
更新:
首先,我尝试简单地调用“animate()”函数,而不是为计时器定义更高的速度以快速调用下一个数字,而不会浪费时间,这会使随机动画看起来很奇怪。
我用过animate(null);
而不是myTimer.delay = 100;
以前,但后来我收到了一个 STACKOVERFLOW 错误:P