前言
上一章我们创建了菜单,这章开始实现具体的内容,先创建一个玩家。
编码
首先我们需要一个可以创建实体的工厂
创建一个属于自己的实体工厂,例如DemoEntityFactory 并实现EntityFactory接口
import com.almasb.fxgl.entity.EntityFactory;
/**
* 实体工厂
* @author lhDream
*/
public class DemoEntityFactory implements EntityFactory {
}
实现创建实体的方法
/**
* 创建玩家实体
* @param data
* @return
*/
@Spawns("Player")
public Entity newPlayer(SpawnData data){
return FXGL.entityBuilder(data)
// 宽 10px 高 10px 颜色黑色
.viewWithBBox(new Rectangle(10,10, Color.BLACK))
.build();
}
准备工作做完,现在创建玩家Player
/**
* 初始化游戏内容
*/
@Override
protected void initGame() {
// 注册实体工厂
FXGL.getGameWorld().addEntityFactory(new DemoEntityFactory());
// 在界面正中间生成玩家实体
FXGL.spawn("Player",FXGL.getAppWidth()/2,FXGL.getAppHeight()/2);
}
效果展示
完整代码
HelloWorldApp
import com.almasb.fxgl.app.GameApplication;
import com.almasb.fxgl.app.GameSettings;
import com.almasb.fxgl.dsl.FXGL;
/**
* @author lhDream
*/
public class HelloWorldApp extends GameApplication {
/**
* 初始化设置
* @param settings
*/
@Override
protected void initSettings(GameSettings settings) {
settings.setTitle("Hello world");
settings.setWidth(600);
settings.setHeight(600);
settings.setMainMenuEnabled(true);
settings.setGameMenuEnabled(true);
}
/**
* 初始化游戏内容
*/
@Override
protected void initGame() {
// 注册实体工厂
FXGL.getGameWorld().addEntityFactory(new DemoEntityFactory());
// 在界面正中间生成玩家实体
FXGL.spawn("Player",FXGL.getAppWidth()/2,FXGL.getAppHeight()/2);
}
/**
* main 程序的开始
* @param args 参数
*/
public static void main(String[] args) {
launch(args);
}
}
DemoEntityFactory
import com.almasb.fxgl.dsl.FXGL;
import com.almasb.fxgl.entity.Entity;
import com.almasb.fxgl.entity.EntityFactory;
import com.almasb.fxgl.entity.SpawnData;
import com.almasb.fxgl.entity.Spawns;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
/**
* 实体工厂
* @author lhDream
*/
public class DemoEntityFactory implements EntityFactory {
/**
* 创建玩家实体
* @param data
* @return
*/
@Spawns("Player")
public Entity newPlayer(SpawnData data){
return FXGL.entityBuilder(data)
// 宽 10px 高 10px 颜色黑色
.viewWithBBox(new Rectangle(10,10, Color.BLACK))
.build();
}
}
完整项目
https://github.com/lhDream/lhDreamGameDemo/tree/master/HelloWorld