- 注册 ComponentClasses
- 注册 SystemInstance
- 注册 Entity-Components
- 注册 ComponentClasses
game.ecs.registerComponents(
Position,
Velocity,
Direction,
Movable,
Sprite,
Background,
Translate,
Camera
);
- 需要在System前注册,
- System注册时自动创建对应分组
- 注册 SystemInstance
game.ecs.addSystems(
new Movement(game),
new Translation(game),
/*输入系统*/
new Keyboard(game),
/*镜头控制*/
new Director(game),
new Puppeteer(game),
/*渲染系统*/
new Render(game)
);
- 注册System自动创建对应的Group
- Group根据ComponentClasses的mask进行创建
- Group会自动获取对应Component的Entity
- 注册 Entity-Components
const square = game.ecs
/*实体标志符*/
.createEntity('square')
/*注册实体属性组件 自动添加 Entity到Group中, */
.addComponents(
new Sprite(createPlayerSprite()),
new Position(32, 0),
new Velocity(16, 16),
new Movable()
);
/*场景添加实体*/
scene0.addSprite(square, 1);
- 注册Entity
- addComponents()调用自动注册Entity到Group中
- 游戏启动
//加载资源
game.prepare();
//启动回调
game.start();
game._beat.start();
- 定时渲染
game._beat.frame();
game.frame();
ecs.update();
system.update();
- 事件注册
// System/keyboard.js
/*注册按键事件*/
stage.addEventListener('keydown', this.onKeyDown.bind(this));
stage.addEventListener('keyup', this.onKeyUp.bind(this));
onKeyDown(e) {
if(keyCodes[e.keyCode]) {
this._keyboard[keyCodes[e.keyCode]] = true;
}
}
onKeyUp(e) {
if(keyCodes[e.keyCode]) {
this._keyboard[keyCodes[e.keyCode]] = false;
}
}