前言注意事项
静态引入(推荐)使用类的静态方法 编码
首先我们需要将Player实体保存,方便之后操作接着实现对Player的控制部分效果展示完整代码 完整项目
前言上一章我们创建了玩家对象,这一章我们实现对玩家的基本控制
注意事项之前我们都是直接通过FXGL类来操作引擎,之后会全部改为引入静态方法的方式,这也是官方推荐的方式,之前使用FXGL类的方式主要用于理解调用的方法是从哪里来的。
静态引入(推荐)// import
import static com.almasb.fxgl.dsl.FXGL.*;
// class method
spawn("Player",FXGL.getAppWidth()/2,FXGL.getAppHeight()/2);
使用类的静态方法
// import
import com.almasb.fxgl.dsl.FXGL;
// class method
FXGL.spawn("Player",FXGL.getAppWidth()/2,FXGL.getAppHeight()/2);
编码
首先我们需要将Player实体保存,方便之后操作
private Entity player;
@Override
protected void initGame() {
// 注册实体工厂
FXGL.getGameWorld().addEntityFactory(new DemoEntityFactory());
// 在界面正中间生成玩家实体
player = FXGL.spawn("Player",FXGL.getAppWidth()/2,FXGL.getAppHeight()/2);
}
接着实现对Player的控制部分
首先也是先重写 initInput 方法,控制部分的程序会在这里被加载,在这里我们实现对Player的控制,例如上下左右:
@Override
protected void initInput() {
onKey(KeyCode.W,"上",()->{
player.translateY(-5);
});
onKey(KeyCode.S,"下",()->{
player.translateY(+5);
});
onKey(KeyCode.A,"左",()->{
player.translateX(-5);
});
onKey(KeyCode.D,"右",()->{
player.translateX(+5);
});
}
此时运行程序即可操作Player移动。
注意,此处的上下左右为操作的名称,会显示在菜单中的按键设置部分。操作时注意输入法会影响输入。
移动效果展示
完整代码DemoEntityFactory没有改动就不贴了.
import com.almasb.fxgl.app.GameApplication;
import com.almasb.fxgl.app.GameSettings;
import com.almasb.fxgl.dsl.FXGL;
import com.almasb.fxgl.entity.Entity;
import javafx.scene.input.KeyCode;
import static com.almasb.fxgl.dsl.FXGL.*;
public class HelloWorldApp extends GameApplication {
private Entity player;
@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());
// 在界面正中间生成玩家实体
player = FXGL.spawn("Player",FXGL.getAppWidth()/2,FXGL.getAppHeight()/2);
}
@Override
protected void initInput() {
onKey(KeyCode.W,"上",()->{
player.translateY(-5);
});
onKey(KeyCode.S,"下",()->{
player.translateY(+5);
});
onKey(KeyCode.A,"左",()->{
player.translateX(-5);
});
onKey(KeyCode.D,"右",()->{
player.translateX(+5);
});
}
public static void main(String[] args) {
launch(args);
}
}
完整项目
https://github.com/lhDream/lhDreamGameDemo/tree/master/HelloWorld



