构造函数 (int, int, string) 未定义;在 LWJGL 中创建显示
the constructor (int, int, string) is undefined; creating display in LWJGL
不确定这是否太具体,或者示例代码太多,但我真的不知道我做错了什么。我正在尝试在 this tutorial 之后在 LWJGL 中进行基本显示 window。第 17 行:
window = new DisplayManager(WIDTH, HEIGHT, "game");
我收到错误消息:构造函数 DisplayManager(int, int, String) 未定义。我对错误是什么有一个大概的了解,但我不知道为什么会这样。我是 Java 的新手,所以不完全了解发生了什么,但我仔细查看了视频中的两个文件,除了文件名不同外,没有发现任何差异我创建的文件和包与他的相比。
这是MainGame.java:
package gameEngine;
import renderEngine.DisplayManager;
public class MainGame implements Runnable {
public Thread game;
public static DisplayManager window;
public static final int WIDTH = 1280, HEIGHT = 760;
public void start() {
game = new Thread(this, "game");
game.start();
}
public static void init() {
System.out.println("Initialising Game...");
window = new DisplayManager(WIDTH, HEIGHT, "game");
window.create();
}
public void run() {
init();
while (true) {
update();
render();
}
}
private void update() {
System.out.println("Updating Game...");
}
private void render() {
System.out.println("Rendering Game...");
}
public static void main(String[] args) {
new MainGame().start();
}
}
这是DisplayManager.java:
package renderEngine;
import org.lwjgl.glfw.GLFW;
import org.lwjgl.glfw.GLFWVidMode;
public class DisplayManager {
private int width, height;
private String title;
private long window;
public void Window(int width, int height, String Game) {
this.width = width;
this.height = height;
this.title = title;
}
public void create() {
if (!GLFW.glfwInit()) {
System.err.println("ERROR: GLFW wasn't initialised!");
return;
}
window = GLFW.glfwCreateWindow(width, height, title, 0, 0);
if (window == 0) {
System.err.println("ERROR: Window wasn't created!");
}
GLFWVidMode videoMode = GLFW.glfwGetVideoMode(GLFW.glfwGetPrimaryMonitor());
GLFW.glfwSetWindowPos(window, videoMode.width() - width / 2, videoMode.height() - height / 2);
GLFW.glfwShowWindow(window);
}
}
抱歉所有未使用的垃圾代码。据我所知,其中很多是为进一步的教程而设置的。如果有人可以帮助我,那将不胜感激。
干杯!
您的 DisplayManager 没有定义构造函数。因此它只有一个不接受任何参数的默认构造函数。
要解决此问题,您可以替换 Window 方法或简单地添加一个构造函数。
public DisplayManager(int width, int height, String Game) {
this.width = width;
this.height = height;
this.title = title;
}
您似乎决定停止学习教程并将 Window
class 重命名为 DisplayManager
。出于某种原因,您还决定 Window
的构造函数应该具有 void
return 类型。
您只需将 Window
方法重命名为 DisplayManager
并删除 return 类型使其成为构造函数。
还有,第三个参数应该叫title
,而不是Game
(感谢@Ivar)
public DisplayManager(int width, int height, String title) {
this.width = width;
this.height = height;
this.title = title;
}
不确定这是否太具体,或者示例代码太多,但我真的不知道我做错了什么。我正在尝试在 this tutorial 之后在 LWJGL 中进行基本显示 window。第 17 行:
window = new DisplayManager(WIDTH, HEIGHT, "game");
我收到错误消息:构造函数 DisplayManager(int, int, String) 未定义。我对错误是什么有一个大概的了解,但我不知道为什么会这样。我是 Java 的新手,所以不完全了解发生了什么,但我仔细查看了视频中的两个文件,除了文件名不同外,没有发现任何差异我创建的文件和包与他的相比。
这是MainGame.java:
package gameEngine;
import renderEngine.DisplayManager;
public class MainGame implements Runnable {
public Thread game;
public static DisplayManager window;
public static final int WIDTH = 1280, HEIGHT = 760;
public void start() {
game = new Thread(this, "game");
game.start();
}
public static void init() {
System.out.println("Initialising Game...");
window = new DisplayManager(WIDTH, HEIGHT, "game");
window.create();
}
public void run() {
init();
while (true) {
update();
render();
}
}
private void update() {
System.out.println("Updating Game...");
}
private void render() {
System.out.println("Rendering Game...");
}
public static void main(String[] args) {
new MainGame().start();
}
}
这是DisplayManager.java:
package renderEngine;
import org.lwjgl.glfw.GLFW;
import org.lwjgl.glfw.GLFWVidMode;
public class DisplayManager {
private int width, height;
private String title;
private long window;
public void Window(int width, int height, String Game) {
this.width = width;
this.height = height;
this.title = title;
}
public void create() {
if (!GLFW.glfwInit()) {
System.err.println("ERROR: GLFW wasn't initialised!");
return;
}
window = GLFW.glfwCreateWindow(width, height, title, 0, 0);
if (window == 0) {
System.err.println("ERROR: Window wasn't created!");
}
GLFWVidMode videoMode = GLFW.glfwGetVideoMode(GLFW.glfwGetPrimaryMonitor());
GLFW.glfwSetWindowPos(window, videoMode.width() - width / 2, videoMode.height() - height / 2);
GLFW.glfwShowWindow(window);
}
}
抱歉所有未使用的垃圾代码。据我所知,其中很多是为进一步的教程而设置的。如果有人可以帮助我,那将不胜感激。 干杯!
您的 DisplayManager 没有定义构造函数。因此它只有一个不接受任何参数的默认构造函数。
要解决此问题,您可以替换 Window 方法或简单地添加一个构造函数。
public DisplayManager(int width, int height, String Game) {
this.width = width;
this.height = height;
this.title = title;
}
您似乎决定停止学习教程并将 Window
class 重命名为 DisplayManager
。出于某种原因,您还决定 Window
的构造函数应该具有 void
return 类型。
您只需将 Window
方法重命名为 DisplayManager
并删除 return 类型使其成为构造函数。
还有,第三个参数应该叫title
,而不是Game
(感谢@Ivar)
public DisplayManager(int width, int height, String title) {
this.width = width;
this.height = height;
this.title = title;
}