我正在尝试制作自己的引擎,但我需要一些帮助.
我目前正在做水平系统.level类扩展了render类,level类覆盖了Render类的render方法.最后,从主类调用render类,但我不调用level类.
编辑:
我已经删除了静态但现在无法调用render方法.我知道我很自我,有点教我自己.
package SimpleEngine.Render;
Run Code Online (Sandbox Code Playgroud)
渲染类(这称为)
import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
import SimpleEngine.Primitives.*;
import static org.lwjgl.opengl.GL11.glClear;
public class Render {
public void Render() {
}
}
Run Code Online (Sandbox Code Playgroud)
Level Class(未调用)我希望这个Render方法覆盖Render类的render方法,但它不起作用.
package SimpleEngine.Level;
import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.glClear;
import SimpleEngine.Render.*;
import SimpleEngine.Primitives.*;
public class Level extends Render {
public void Render() {
glClear(GL_COLOR_BUFFER_BIT);
Primitives.DrawSquare(200, 200, 50, 50, 1, 0, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
我的主要方法(调用渲染但不能再渲染)
package SimpleEngine;
import org.lwjgl.LWJGLException;
import SimpleEngine.Level.*;
import SimpleEngine.Logic.*;
import SimpleEngine.Input.*;
import SimpleEngine.Render.*;
import SimpleEngine.Entites.*;
import SimpleEngine.Timer.*;
import org.lwjgl.Sys;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import static org.lwjgl.opengl.GL11.*;
public class simpleEngine {
public static final int WIDTH = 640;
public static final int HEIGHT = 480;
private static boolean isRunning = true;
public static void main(String[] args) {
setUpDisplay();
setUpOpenGL();
Entity.setUpEntities();
Timer.setUpTimer();
while (isRunning) {
Render.Render();
Logic.logic(Timer.getDelta());
Input.input();
Display.update();
Display.sync(60);
if (Display.isCloseRequested()) {
isRunning = false;
}
}
Display.destroy();
System.exit(0);
}
private static void setUpDisplay() {
try {
Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
Display.setTitle("SimpleEngine");
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
Display.destroy();
System.exit(1);
}
}
private static void setUpOpenGL() {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 640, 480, 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
}
}
Run Code Online (Sandbox Code Playgroud)
您无法覆盖静态方法.
如果子类定义的类方法与超类中的类方法具有相同的签名,则子类中的方法会隐藏超类中的方法.
和
如果尝试将超类中的实例方法更改为子类中的类方法,则会出现编译时错误,反之亦然.
static从Render类render()方法中删除并更改Level类Render方法render()以引入覆盖行为
编辑:
while (isRunning) {
new Level().Render();
Run Code Online (Sandbox Code Playgroud)
注意:Java命名约定建议方法名称应以小写字母开头,名称应为camelcase.
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |