Java 设置变量一次

Java 设置变量一次,java,frame,Java,Frame,嗯,很难解释,所以我会尽力 我有这个方法: private void manageActions(long delta) { lastFrameChange += delta; if(currentAction == States.Action.STANDING) { lastFrameChange = 0; resetDirections(); } if(currentAction == States.Action.WALKI

嗯,很难解释,所以我会尽力

我有这个方法:

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变量设置为角色的站立帧


我一直在想什么时候重置这个变量,但我不知道:/

您需要保留另一个变量“previousDirection”,它设置在方法的末尾。
输入该方法时,请检查方向是否发生了更改,并相应地设置lastFrameChange和currentFrame。

我想在不增加变量的情况下执行此操作,以保持简单,但我会尝试您的解决方案。非常感谢。我认为如果没有另一个变量,就没有办法做到这一点。要检测更改,您需要知道之前的状态。