1

这是有问题的代码,当分数为 X 时有一个星形动画,动画一直播放到特定帧如何用更少的 ifs 使这个函数更小?正如你可以看到的功能是从 500 到 0。

addEventListener(Event.ENTER_FRAME, star);
function star(e:Event):void{
if (totalScore<= 500 && totalScore>490) {
    if(GAME.stars.currentFrame == 51){
    GAME.stars.stop();
    }
}
if (totalScore<= 490 && totalScore>480) {
    if(GAME.stars.currentFrame == 50){
    GAME.stars.stop();
    }
}
///...
    if (totalScore= 0 && totalScore>10) {
    if(GAME.stars.currentFrame == 1){
    GAME.stars.stop();
    }
}
}    

谢谢!!!

4

1 回答 1

2

根据您发布的模式,我会这样写:

addEventListener(Event.ENTER_FRAME, star);
function star(e:Event):void{
    if (GAME.stars.currentFrame == (Math.ceil(totalScore / 10) + 1)) {
        GAME.stars.stop();
    }
}

但是,正如@putvande 指出的那样,最终if语句不遵循模式(并且看起来有错字),因此如果不打算遵循它,您将需要单独处理。

于 2013-08-11T21:11:32.117 回答