因此,我试图用变量创建一个无限循环,就像乒乓球一样,你击球并且它会一次又一次地返回,左,右,左,右。它可以工作,但每次都会保持越来越快,我知道为什么。你可能会在代码中找到原因,但每次我设置新的时间间隔时,我都无法清除它,因为它没有分配给变量。无论如何,我想要的每次都是一样的速度,没有越来越快,有没有办法解决这个问题,或者如果有的话,你能否提出一个替代方案?谢谢!变量是否可以是间隔(as3)?
import flash.events.Event;
var badbee1right:uint = setInterval (beebad1right, 100);
function beebad1right():void {
beebad1.x+=15;
}
var badbee1left:uint = setInterval (beebad1left, 100);
clearInterval(badbee1left);
function beebad1left():void {
beebad1.x-=15;
}
leftbadbeewall.addEventListener(Event.ENTER_FRAME, leftbadbeewallhit);
function leftbadbeewallhit(e:Event) {
if(beebad1.hitTestObject(leftbadbeewall)) {
beebad1.x+=7;
clearInterval(badbee1left);
clearInterval(badbee1right);
}
}
rightbadbeewall.addEventListener(Event.ENTER_FRAME, rightbadbeewallhit);
function rightbadbeewallhit(e:Event) {
if(beebad1.hitTestObject(rightbadbeewall)) {
clearInterval(badbee1right);
bee.x-=7;
clearInterval(badbee1left);
}
}
虽然使用多个setIntervals和多个enterFrame处理程序是一个不错的主意,但它在计算上却过于夸张。一般来说,在进行程序化动画时,您需要使用一个as3 Timer对象来创建一个绘图循环,并在那里执行所有逻辑。 100毫秒是一个体面的时间间隔开始。与其将每个动画主题的绘图逻辑封装在侦听器函数中,您将获得更多的牵引力,封装类中的逻辑并更新绘图循环中该类(或类)的实例。 – 2013-03-10 01:43:22