有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Slick动画每帧必须有一个持续时间

我正在尝试用Slick制作一个游戏,在开始之前,我想测试一下我将使用的直升机动画。它只是打开,然后立即关闭,出现以下错误:

线程“main”java中出现异常。lang.RuntimeException:每帧必须有一个持续时间 在org。纽道恩。滑溜的动画(Animation.java:111) 在javagame。菜单init(Menu.java:22) 在javagame。游戏initStatesList(Game.java:19) 在org。纽道恩。滑溜的状态StateBasedName。init(StateBasedGame.java:170) 在org。纽道恩。滑溜的AppGameContainer。安装程序(AppGameContainer.java:433) 在org。纽道恩。滑溜的AppGameContainer。开始(AppGameContainer.java:357) 在javagame。游戏main(Game.java:29)

这是我的代码:

package javagame;

import org.newdawn.slick.*;
import org.newdawn.slick.state.*;
import org.newdawn.slick.tests.AnimationTest;


public class Menu extends BasicGameState {

      Animation sprite, fly;


    public Menu(int state){

        }

        public void init(GameContainer gc, StateBasedGame sbg) throws SlickException{
            Image [] flyanimation = {new Image("res/copter1.png"), new Image("res/copter2.png"), 
                    new Image("res/copter3.png"), new Image("res/copter4.png")};
            int [] duration = {300, 300};

            fly = new Animation(flyanimation, duration, false);
            sprite = fly;
        }

        public void render(GameContainer gc, StateBasedGame sbg, Graphics g)throws SlickException{
            sprite.draw(150, 150);
        }

        public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException{
            Input input = gc.getInput();
            if(input.isKeyDown(Input.KEY_SPACE)){
                sprite = fly;
                sprite.update(delta);
            }
        }

        public int getID(){
            return 0;
        }
    } 

谢谢你的帮助!如果我完全错了,我很抱歉。我找不到像样的教程来救我的命


共 (1) 个答案

  1. # 1 楼答案

    问题是,您正在向动画构造函数传递4个图像和2个持续时间值,请尝试以下操作:

                    public void init(GameContainer gc, StateBasedGame sbg) throws SlickException{
            Image [] flyanimation = {new Image("res/copter1.png"), new Image("res/copter2.png"), 
                    new Image("res/copter3.png"), new Image("res/copter4.png")};
            int [] duration = {300, 300, 300, 300};
    
            fly = new Animation(flyanimation, duration, false);
            sprite = fly;
        }