AS3:如果if语句怎么缩短呢?

时间:2011-09-21 06:28:39

标签: actionscript

我是AS3的新手所以如果这是一个愚蠢的问题,请原谅我。

我正在尝试为某些东西写一个if else语句,虽然它很长,但它只是我需要的1/5。我肯定在这里看到了一个模式,我想为它编写一个循环。

但我似乎无法绕过它。有人可以帮帮我吗?

if(all_mc.x<-1 && all_mc.x>-panelWidth+1) {
    mcPosX = 0;
} else if(all_mc.x<-panelWidth-1 && all_mc.x>-panelWidth*2+1) {
    mcPosX = -panelWidth;
} else if(all_mc.x<-panelWidth*2-1 && all_mc.x>-panelWidth*3+1) {
    mcPosX = -panelWidth*2;
} else if(all_mc.x<-panelWidth*3-1 && all_mc.x>-panelWidth*4+1) {
    mcPosX = -panelWidth*3;
} else if(all_mc.x<-panelWidth*4-1 && all_mc.x>-panelWidth*5+1) {
    mcPosX = -panelWidth*4;
} else if(all_mc.x<-panelWidth*5-1 && all_mc.x>-panelWidth*6+1) {
    mcPosX = -panelWidth*5;
} else if(all_mc.x<-panelWidth*6-1 && all_mc.x>-panelWidth*7+1) {
    mcPosX = -panelWidth*6;
} else if(all_mc.x<-panelWidth*7-1 && all_mc.x>-panelWidth*8+1) {
    mcPosX = -panelWidth*7;
} else if(all_mc.x<-panelWidth*8-1 && all_mc.x>-panelWidth*9+1) {
    mcPosX = -panelWidth*8;
} else if(all_mc.x<-panelWidth*9-1 && all_mc.x>-panelWidth*10+1) {
    mcPosX = -panelWidth*9;
} else if(all_mc.x<-panelWidth*10-1 && all_mc.x>-panelWidth*11+1) {
    mcPosX = -panelWidth*10;
} else if(all_mc.x<-panelWidth*11-1 && all_mc.x>-panelWidth*12+1) {
    mcPosX = -panelWidth*11;
} else if(all_mc.x<-panelWidth*12-1 && all_mc.x>-panelWidth*13+1) {
    mcPosX = -panelWidth*12;
} else if(all_mc.x<-panelWidth*13-1 && all_mc.x>-panelWidth*14+1) {
    mcPosX = -panelWidth*13;
} else if(all_mc.x<-panelWidth*14-1 && all_mc.x>-panelWidth*15+1) {
    mcPosX = -panelWidth*14;
} else if(all_mc.x<-panelWidth*15-1 && all_mc.x>-panelWidth*16+1) {
    mcPosX = -panelWidth*15;
} else if(all_mc.x<-panelWidth*16-1 && all_mc.x>-panelWidth*17+1) {
    mcPosX = -panelWidth*16;
} else if(all_mc.x<-panelWidth*17-1 && all_mc.x>-panelWidth*18+1) {
    mcPosX = -panelWidth*17;
} else if(all_mc.x<-panelWidth*18-1 && all_mc.x>-panelWidth*19+1) {
    mcPosX = -panelWidth*18;
} else if(all_mc.x<-panelWidth*19-1 && all_mc.x>-panelWidth*20+1) {
    mcPosX = -panelWidth*19;
}

//Tween all_mc to position
var toRightTween:TweenLite = new TweenLite(all_mc,0.5, {x:mcPosX});

mcPosX需要达到= -panelWidth * 200!

2 个答案:

答案 0 :(得分:0)

var i:int = 200;
if(all_mc.x<-1 && all_mc.x>-panelWidth+1) {
    mcPosX = 0;
} else{
    while(all_mc.x<(-panelWidth*i)-1 && all_mc.x>(-panelWidth*(i+1))+1) {
       i--;
    }
    mcPosX = -panelWidth*i;
}

我认为你的问题可能有更好的解决方案,但你发布的部分也没问题。

答案 1 :(得分:0)

我想如果你解释一下你想要实现的目标而不是尝试修复你的实现,你可能会更容易回答这个问题。我猜你可以完全使用不同的逻辑来实现你想要的结果。