javafx 在游戏中渲染实体的正确方法?
javafx Proper way of rendering Entities in Game?
我正在使用 javafx 开发游戏。我以前用 awt 编写过一些游戏,所以我对游戏的工作原理有基本的了解。 (我使用了 bufferedimages)但是,javafx api 中有这么多新东西,我怀疑我的旧游戏架构是否仍然适用于 javafx。这是我游戏的当前逻辑:
我的渲染是这样的:
List<Entity> entities= new ArrayList<Entity>;
GraphicsContext gc; ///imagine that I created a new GraphicsContext object
在 render 方法中它基本上是这样的:
for(Entity e : entities)
{
gc.drawImage(e.getX(),e.getY(),e.getImage());
}
但是,由于javafx 有这么多新特性,我想知道这种方法是否过时或效率低下。我应该移动这些实体还是应该移动图像本身?我正在开发 space 射击游戏,那么 Interpolate() 和 Transition 会改进我的游戏吗?
具体的javafx游戏教程不多,只好求助于此...
谢谢!
我认为你的做法是最好的方式,我已经做过类似的事情并使用了这样的实体:
包裹 jumpNRun.gameObjects;
import java.util.List;
import javafx.scene.image.Image;
import javax.xml.bind.annotation.XmlRootElement;
import jumpNRun.gameObjects.entitys.Solid;
@XmlRootElement
public class Entity {
protected Image entityImage;
protected double gravity = 0;
protected int height = 0, width = 0;
protected int x = 0, y = 0;
protected int id = 0;
/**
* Class speciefed informations
*/
protected String extraInfo;
protected boolean killed = false;
public String getExtraInfo() {
return extraInfo;
}
public void setExtraInfo(String extraInfo) {
this.extraInfo = extraInfo;
}
...等等
可以这样画:
gc.drawImage(backround, 0, 0);
for (Entity e : entitys) {
gc.drawImage(e.getEntityImage(), e.getX(), e.getY());
}
我正在使用 javafx 开发游戏。我以前用 awt 编写过一些游戏,所以我对游戏的工作原理有基本的了解。 (我使用了 bufferedimages)但是,javafx api 中有这么多新东西,我怀疑我的旧游戏架构是否仍然适用于 javafx。这是我游戏的当前逻辑:
我的渲染是这样的:
List<Entity> entities= new ArrayList<Entity>;
GraphicsContext gc; ///imagine that I created a new GraphicsContext object
在 render 方法中它基本上是这样的:
for(Entity e : entities)
{
gc.drawImage(e.getX(),e.getY(),e.getImage());
}
但是,由于javafx 有这么多新特性,我想知道这种方法是否过时或效率低下。我应该移动这些实体还是应该移动图像本身?我正在开发 space 射击游戏,那么 Interpolate() 和 Transition 会改进我的游戏吗?
具体的javafx游戏教程不多,只好求助于此... 谢谢!
我认为你的做法是最好的方式,我已经做过类似的事情并使用了这样的实体: 包裹 jumpNRun.gameObjects;
import java.util.List;
import javafx.scene.image.Image;
import javax.xml.bind.annotation.XmlRootElement;
import jumpNRun.gameObjects.entitys.Solid;
@XmlRootElement
public class Entity {
protected Image entityImage;
protected double gravity = 0;
protected int height = 0, width = 0;
protected int x = 0, y = 0;
protected int id = 0;
/**
* Class speciefed informations
*/
protected String extraInfo;
protected boolean killed = false;
public String getExtraInfo() {
return extraInfo;
}
public void setExtraInfo(String extraInfo) {
this.extraInfo = extraInfo;
}
...等等 可以这样画:
gc.drawImage(backround, 0, 0);
for (Entity e : entitys) {
gc.drawImage(e.getEntityImage(), e.getX(), e.getY());
}