AS3: Как я могу сократить это, если еще заявление? - PullRequest
0 голосов
/ 21 сентября 2011

Я новичок в 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 голосов
/ 30 сентября 2011

Я думаю, что вы можете упростить ответ на этот вопрос, если объясните, чего вы пытаетесь достичь, а не пытаетесь исправить вашу реализацию. Я предполагаю, что вы, вероятно, сможете достичь желаемого результата, используя совершенно другую логику.

0 голосов
/ 21 сентября 2011
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;
}

Я думаю, что может быть лучшее решение вашей проблемы, но это нормально для той части, которую вы публикуете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...