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