2011-09-21 49 views
0

我是新来的AS3,所以请原谅我,如果这是一个愚蠢的问题。AS3:如果else语句能如何缩短这个?

我想写一个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!

回答

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; 
} 

有可能是你的问题,我认为更好的解决方案,但是这是确定为您发布的部分。

+0

嗨ymutlu,谢谢你的帮助。在我的代码结尾处有一个补间。基本上我正在尝试检测'all_mc'的位置以将其补间到最近的'panelWidth'。当我尝试你的代码时,它似乎总是补间为0.我道歉,如果这是混乱。 – muudless

+0

编辑了答案,我认为这会有所帮助。但如果你的“ifelse”正在工作,这也应该起作用。 – ymutlu

0

我认为如果你解释你正在努力达到的目的而不是尝试解决你的实现问题,你可能会更容易回答这个问题。我猜你可能完全使用不同的逻辑来实现预期的结果。