使用教程中的 Javafx 类对游戏进行编程并遇到未定义的类错误
Posted
技术标签:
【中文标题】使用教程中的 Javafx 类对游戏进行编程并遇到未定义的类错误【英文标题】:Programming a game using the Javafx class from a tutorial and have come across an undefined class error 【发布时间】:2019-02-14 00:40:40 【问题描述】:else if(left || right)
if(currentAction != WALKING)
currentAction = WALKING;
animation.setFrames(sprites.get(WALKING));
animation.setDelay(40);
width = 30;
这是我遇到问题的代码。即animation.setFrames
和setDelay
setFrames
使用BufferedImage
数组,setDelay
是long
变量。出现的两个错误是
The method setFrames(BufferedImage[]) is undefined for the type Animation
和
The method setDelay(Duration) in the type Animation is not applicable for the arguments (int)
public void setFrames(BufferedImage[] frames)
this.frames = frames;
currentFrame = 0;
startTime = System.nanoTime();
playedOnce = false;
这是setFrames
的代码,delay
的 setter 代码只是
public void setDelay(long d)
delay = d;
欢迎任何帮助。
教程中没有这些错误
编辑:我在构造函数中创建了一个新的Animation
类,但它没有解决它。添加动画类
package Entity;
import java.awt.image.BufferedImage;
public class Animation
private BufferedImage[] frames;
private int currentFrame;
private long startTime;
private long delay;
private boolean playedOnce; played; e.g. an attack so it does not
public void Animation()
playedOnce = false;
public void setFrames(BufferedImage[] frames)
this.frames = frames;
currentFrame = 0;
startTime = System.nanoTime();
playedOnce = false;
public void setDelay(long d)
delay = d;
public void setFrame(int i)
currentFrame = i;
public void update()
if (delay == -1)
return;
long elapsed = (System.nanoTime() - startTime) / 1000000;
if (elapsed > delay)
currentFrame++;
playedOnce = true;
public int getFrame()
return currentFrame;
public BufferedImage getImage()
return frames[currentFrame];
public boolean hasPlayedOnce()
return playedOnce;
【问题讨论】:
确保您没有从 javafx.animation 导入 Animation 类。如果您在导入中找到此行,请删除它:import javafx.animation.Animation。如果这不能解决问题,请发布您的整个动画课程。 显示minimal reproducible example 在 JavaFX 项目中使用BufferedImage
似乎有点奇怪。通常BufferedImage
用于 Swing/AWT 项目; JavaFX 项目通常使用javafx.scene.image.Image
。此外,类层次结构在这里似乎很重要。看起来您正在使用 javafx.animation.Animation
而不扩展它。这样你的自定义方法不可用,那么你把它们放在哪里了?
发生错误的类扩展了一个超级抽象类。导致问题的方法在教程中没有在此类中扩展 Animation 类的情况下没有造成任何问题。
已修复感谢支持,我只需要新建一个动画
【参考方案1】:
感谢 Bandreid 的回答。 它需要添加对象并创建一个新对象。
【讨论】:
以上是关于使用教程中的 Javafx 类对游戏进行编程并遇到未定义的类错误的主要内容,如果未能解决你的问题,请参考以下文章