2011-09-21 4 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

안녕하세요. 도움을 주셔서 감사합니다. 내 코드 끝에는 트윈이 있습니다. 기본적으로'all_mc'의 위치를 ​​감지하여 가장 가까운'panelWidth'에 트위닝하려고합니다. 귀하의 코드를 시도했을 때 항상 0으로 트위닝 된 것 같습니다. 혼란스러운 경우 사과드립니다. – muudless

+0

이 답변을 편집했습니다. 이것이 도움이 될 것이라고 생각합니다. 그러나 당신의 "ifelse"가 작동한다면, 이것은 또한 작동해야합니다. – ymutlu

0

구현을 수정하는 대신 달성하려는 것을 설명하면이 질문을 쉽게 대답 할 수 있습니다. 아마 당신은 다른 논리를 사용하여 의도 한 결과를 얻을 수 있다고 생각합니다.

관련 문제