Java动画-每帧必须有一个持续时间
我是编程新手,我有个问题。我遵循了NewBoston教程,添加了更多动画,现在控制台显示: 线程“main”java.lang.RuntimeException中的异常:必须存在 每帧一个持续时间 这是我的密码:Java动画-每帧必须有一个持续时间,java,animation,Java,Animation,我是编程新手,我有个问题。我遵循了NewBoston教程,添加了更多动画,现在控制台显示: 线程“main”java.lang.RuntimeException中的异常:必须存在 每帧一个持续时间 这是我的密码: package javagame; import org.newdawn.slick.*; import org.newdawn.slick.state.*; public class Play extends BasicGameState{ Animation player,
package javagame;
import org.newdawn.slick.*;
import org.newdawn.slick.state.*;
public class Play extends BasicGameState{
Animation player, movingUp, movingUp1, movingUp2, movingDown, movingDown1, movingDown2, movingLeft, movingLeft1, movingLeft2, movingRight, movingRight1, movingRight2;
Image playground;
boolean quit = false;
int[] duration = {200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200};
float playerPositionX = 0;
float playerPositionY = 0;
float shiftX = playerPositionX + 320;
float shiftY = playerPositionY + 160;
public Play(int State){
}
public void init(GameContainer gc, StateBasedGame sbg) throws SlickException{
playground = new Image("res/playground.png");
Image[] walkUp = {new Image("res/player11.png"), new Image("res/player12.png"), new Image("res/player10.png")};
Image[] walkDown = {new Image("res/player2.png"), new Image("res/player3.png"), new Image("res/player1.png")};
Image[] walkLeft = {new Image("res/player5.png"), new Image("res/player6.png"), new Image("res/player4.png")};
Image[] walkRight = {new Image("res/player8.png"), new Image("res/player9.png"), new Image("res/player7.png")};
movingUp = new Animation(walkUp, duration, false);
movingDown = new Animation(walkDown, duration, false);
movingLeft = new Animation(walkLeft, duration, false);
movingRight = new Animation(walkRight, duration, false);
player = movingDown;
}
public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException{
playground.draw(playerPositionX, playerPositionY);
player.draw(shiftX, shiftY);
g.drawString("Player's X: "+playerPositionX+"\nPlayer's Y: "+playerPositionY, 400, 20);
if(quit==true){
g.drawString("Resume (R)", 250, 100);
g.drawString("Main Menu (M)", 250, 150);
g.drawString("Quit Game (Q)", 250, 200);
if(quit==false){
g.clear();
}
}
}
public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException{
Input input = gc.getInput();
//up
if(input.isKeyDown(Input.KEY_UP)){
player = movingUp;
playerPositionY += delta * .1f;
if(playerPositionY>162){
playerPositionY -= delta * .1f;
}
}
//down
if(input.isKeyDown(Input.KEY_DOWN)){
player = movingDown;
playerPositionY -= delta * .1f;
if(playerPositionY<-600){
playerPositionY += delta * .1f;
}
}
//left
if(input.isKeyDown(Input.KEY_LEFT)){
player = movingLeft;
playerPositionX += delta * .1f;
if(playerPositionX>324){
playerPositionX -= delta * .1f;
}
//right
if(input.isKeyDown(Input.KEY_RIGHT)){
player = movingRight;
playerPositionX -= delta * .1f;
if(playerPositionX<-840){
playerPositionX += delta * .1f;}
}
}
}
public int getID(){
return 1;
}
}
包javagame;
导入org.newdawn.slick.*;
导入org.newdawn.slick.state.*;
公共类播放扩展了BasicGameState{
动画播放器,movingUp,movingP1,movingP2,movingDown1,movingDown2,movingLeft,movingLeft1,movingLeft2,movingRight,movingRight1,movingRight2;
形象游乐场;
布尔退出=假;
int[]持续时间={200200200200200200200200200200200200200200200200200200200};
浮动播放位置x=0;
浮动播放位置Y=0;
浮动移位TX=播放位置X+320;
浮动移位=播放位置Y+160;
公共游戏(国际国家){
}
public void init(GameContainer gc,StateBasedGame sbg)引发异常{
操场=新图像(“res/playerd.png”);
Image[]walkUp={newimage(“res/player11.png”)、newimage(“res/player12.png”)、newimage(“res/player10.png”);
Image[]walkDown={newimage(“res/player2.png”)、newimage(“res/player3.png”)、newimage(“res/player1.png”);
Image[]walkleet={newimage(“res/player5.png”)、newimage(“res/player6.png”)、newimage(“res/player4.png”);
Image[]walkRight={newimage(“res/player8.png”)、newimage(“res/player9.png”)、newimage(“res/player7.png”);
movingUp=新动画(漫游、持续时间、假);
movingDown=新动画(向下漫游、持续时间、假);
movingLeft=新动画(walkLeft、duration、false);
movingRight=新动画(walkRight、duration、false);
玩家=向下移动;
}
公共void呈现(GameContainer gc、StateBasedGame sbg、Graphics g)引发异常{
操场.绘制(playerPositionX,playerPositionY);
抽牌(shiftX,shiftY);
g、 抽绳(“玩家的X:+playerPositionX+”\n玩家的Y:+playerPositionY,400,20);
if(quit==true){
g、 抽绳(“恢复(R)”,250,100;
g、 抽绳(“主菜单(M)”,250,150;
g、 抽绳(“退出游戏(Q)”,250200;
if(quit==false){
g、 清除();
}
}
}
公共无效更新(GameContainer gc、StateBasedGame sbg、int delta)引发异常{
Input=gc.getInput();
//向上
if(input.isKeyDown(input.KEY_UP)){
玩家=移动;
播放位置Y+=增量*.1f;
如果(播放位置>162){
播放位置Y-=增量*.1f;
}
}
//向下
if(input.isKeyDown(input.KEY_DOWN)){
玩家=向下移动;
播放位置Y-=增量*.1f;
如果(播放位置324){
playerPositionX-=增量*.1f;
}
//对
if(input.isKeyDown(input.KEY_RIGHT)){
玩家=向右移动;
playerPositionX-=增量*.1f;
如果(playerPositionX谷歌搜索“每帧必须有一个持续时间”的第一个结果在同一个网站上导致了一个相同的问题:
持续时间数组的大小必须与图像数组的大小相同。更改为:
int[]duration={200200200};