前言 {#前言}
上一章我们创建了菜单,这章开始实现具体的内容,先创建一个玩家。
编码 {#编码}
首先我们需要一个可以创建实体的工厂 {#首先我们需要一个可以创建实体的工厂}
创建一个属于自己的实体工厂,例如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 {#准备工作做完现在创建玩家player}
/** * 初始化游戏内容 */ @Override protected void initGame() { // 注册实体工厂 FXGL.getGameWorld().addEntityFactory(new DemoEntityFactory());
<span class="hljs-comment">// 在界面正中间生成玩家实体</span> FXGL.spawn(<span class="hljs-string">"Player"</span>,FXGL.getAppWidth()/<span class="hljs-number">2</span>,FXGL.getAppHeight()/<span class="hljs-number">2</span>); }
效果展示 {#效果展示}
完整代码 {#完整代码}
HelloWorldApp {#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 参数 */``
publicstatic
void
main(String[] args)
{ launch(args); } }
DemoEntityFactory {#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