Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java动画-每帧必须有一个持续时间_Java_Animation - Fatal编程技术网

Java动画-每帧必须有一个持续时间

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,

我是编程新手,我有个问题。我遵循了NewBoston教程,添加了更多动画,现在控制台显示:

线程“main”java.lang.RuntimeException中的异常:必须存在 每帧一个持续时间

这是我的密码:

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};