java - Java 游戏与 JavaFX 画布 | 画布停止更新
问题描述
我使用 Java 使用 JavaFX Canvas 创建游戏。
我将 Canvas graphicsContext 传递给我的 GameLoop,它启动了一个额外的线程。从那里,我通过 ObjectHandler 将我的 graphicsContext 传递给要在画布上绘制的每个对象。
它以这种方式工作了一段时间,但随后画布以某种方式停止并且没有重绘任何对象。游戏仍在后台运行。在日志中,我可以看到所有对象都在继续运行和更新。有谁知道为什么会这样或我该如何解决?
这是我的窗口类的一部分:
canvas = new Canvas(Config.getCANVAS_WIDTH(), Config.getCANVAS_HEIGHT());
canvas.setFocusTraversable(true);
gc = new GameContainer(canvas.getGraphicsContext2D(), canvas);
primaryStage.setTitle(gc.getTitle());
primaryStage.setResizable(false);
这是我的 Gameloop 的一部分:
if (render) {
gc.clearRect(0, 0, width, height);
handler.render(gc);
gc.setFill(Color.GRAY);
if (Config.isDebug()) {
debugText.printDebug(fps);
}
frames++;
}
HandlerClass 只是一个带有 arrayList 和两个循环(用于刻度和渲染)的列表。这是典型渲染函数的示例
public void render(GraphicsContext gc) {
gc.save();
gc.translate(x, y);
gc.rotate(rotation);
gc.setFill(Color.RED);
gc.fillRect(-4, -4, 8, 8);
gc.restore();
}
解决方案
推荐阅读
- node.js - 分子 - 如何在笑话中模拟方法?
- c++ - C++:如何在循环中生成指向函数指针的数组
- c++ - 选择模板成员函数的正确返回类型
- java - 如何以编程方式在android设备中配置静态IP地址
- android - 是否可以将网络调用超时设置为 60 秒以上。
- javascript - 获取有权限的用户信息进入facebook小游戏
- javascript - Recaptcha(v2 和 v3)不适用于三星浏览器(但适用于 HTTPS)
- javascript - Ruby Slim Lang:Onclick 按钮触发另一个 onclick 事件
- android - 使用 TFLite 在 android 上进行 ICNET 快速分割
- manifest - 反应应用程序图标/清单未显示在gh页面上