前言 {#前言}
上一章我们创建了菜单,这章开始实现具体的内容,先创建一个玩家。
编码 {#编码}
首先我们需要一个可以创建实体的工厂 {#首先我们需要一个可以创建实体的工厂}
创建一个属于自己的实体工厂,例如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 程序的开始
-
@paramargs 参数 */``
public
static
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