设置一次变量

时间:2011-07-08 19:41:14

标签: java frame

嗯,很难解释,所以我会尽我所能......

我有这个方法:

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 个答案:

答案 0 :(得分:2)

你需要保留另一个变量“previousDirection”,它在方法的末尾设置。 输入方法时,请检查方向是否有变化,并相应地设置lastFrameChange和currentFrame。