import Sprite from '../base/sprite'; const BULLET_IMG_SRC = 'images/bullet.png'; const BULLET_WIDTH = 16; const BULLET_HEIGHT = 30; export default class Bullet extends Sprite { constructor() { super(BULLET_IMG_SRC, BULLET_WIDTH, BULLET_HEIGHT); } init(x, y) { this.x = x; this.y = y; this.isActive = true; this.visible = true; } setPos(x, y) { this.x = x; this.y = y; } // 每一帧更新子弹位置 update() { if (GameGlobal.databus.isGameOver) { return; } // 子弹位置由外部控制(Player控制) } destroy() { this.isActive = false; // 子弹没有销毁动画,直接移除 this.remove(); } remove() { this.isActive = false; this.visible = false; // 回收子弹对象 GameGlobal.databus.removeBullets(this); // 注意:DataBus.removeBullets 内部调用 pool.recover('bullet', bullet) // 我们需要修改 DataBus 或者在这里手动回收 // 由于 DataBus 是通用的,我们最好修改 DataBus 或者在 DataBus 中传入 key } }