Установка переменной один раз - PullRequest
0 голосов
/ 08 июля 2011

Ммм, это сложно объяснить, поэтому я сделаю все возможное ...

У меня есть этот метод:

private void manageActions(long delta) {
    lastFrameChange += delta;

    if(currentAction == States.Action.STANDING) {
        lastFrameChange = 0;
        resetDirections();
    }

    if(currentAction == States.Action.WALKING) {
        switch(currentDirection) {
            case UP:
                if(lastFrameChange > 75.0f) {
                    lastFrameChange = 0;
                    if(++currentFrame > 2)
                        currentFrame = 1;
                }
                break;
            case DOWN:
                if(lastFrameChange > 75.0f) {
                    lastFrameChange = 0;
                    if(++currentFrame > 5)
                        currentFrame = 4;
                }
                break;
            case LEFT:
                if(lastFrameChange > 75.0f) {
                    lastFrameChange = 0;
                    if(++currentFrame > 7)
                        currentFrame = 6;
                }
                break;
            case RIGHT:
                if(lastFrameChange > 75.0f) {
                    lastFrameChange = 0;
                    if(++currentFrame > 9)
                        currentFrame = 8;
                }
                break;
        }
    }
}

Это метод для изменения фреймов персонажа на основена его ориентацию и статус (стоять, ходить ...) Проблема в том, что когда мой персонаж движется вверх, а затем вправо, он проходит через все кадры между ними.Это связано с тем, что переменная currentFrame не сбрасывается каждый раз, когда вы изменяете ориентацию в правильном направлении, и последний кадр сохраняется.

Еще одна вещь, resetDirections () устанавливает переменную currentFrame для постоянных кадров символа.

Я думал, когда нужно сбросить эту переменную, но понятия не имею: /

1 Ответ

2 голосов
/ 08 июля 2011

Вам нужно сохранить другую переменную «previousDirection», которая установлена ​​в конце метода.Когда вы вводите метод, проверьте, было ли изменение направления, и соответственно установите lastFrameChange и currentFrame.

...