从 JavaScript class 继承特征
Inheriting features from a JavaScript class
我正在尝试制作一个简单的 JavaScript 游戏。在游戏中,所有的游戏对象都应该可以拖放。现在,这段代码可以解决问题:
function create() {
game.stage.backgroundColor = 'rgba(255, 255, 255, 0.5)'
combinator = game.add.sprite(10, 15, 'Combinator')
comparer = game.add.sprite(100, 15, 'Comparer')
button = game.add.sprite(50, 15, 'Button')
button.inputEnabled = true;
button.input.enableDrag(true);
combinator.inputEnabled = true;
combinator.input.enableDrag(true);
comparer.inputEnabled = true;
comparer.input.enableDrag(true);
}
但我正在尝试为所有游戏对象创建一个 class,其中 inputEnabled= true 和 input.enableDrag(true),因此我只需要定义一次。我想是这样的:
class gameObject {
constructor () {
this.inputEnabled = true;
this.input.enableDrag(true);
}
}
但我无法理解如何在创建函数中使用它。我需要让 game.add.sprite(x,y,'name') 成为 class 的一部分吗?
您希望 class 继承自 Phaser.Sprite
class:
class gameObject extends Phaser.Sprite {
constructor (game, x, y, key) {
super(game, x, y, key);
this.inputEnabled = true;
this.input.enableDrag(true);
}
}
那么您的创建函数将如下所示:
function create() {
game.stage.backgroundColor = 'rgba(255, 255, 255, 0.5)'
combinator = game.add.existing(new gameObject(game, 10, 15, 'Combinator'))
comparer = game.add.existing(new gameObject(game, 100, 15, 'Comparer'))
button = game.add.existing(new gameObject(game, 50, 15, 'Button'))
}
您可以创建一个工厂 class 来为您创建精灵。
class SpriteFactory {
constructor(game) {
this.game = game
}
getDraggableSprite(...spriteParameters) {
const sprite = this.game.add.sprite(...spriteParameters)
sprite.inputEnabled = true
sprite.input.enableDrag(true)
return sprite
}
}
function create() {
game.stage.backgroundColor = 'rgba(255, 255, 255, 0.5)'
const spriteFactory = new SpriteFactory(game)
combinator = spriteFactory.getDraggableSprite(10, 15, 'Combinator')
comparer = spriteFactory.getDraggableSprite(100, 15, 'Comparer')
button = spriteFactory.getDraggableSprite(50, 15, 'Button')
}
我正在尝试制作一个简单的 JavaScript 游戏。在游戏中,所有的游戏对象都应该可以拖放。现在,这段代码可以解决问题:
function create() {
game.stage.backgroundColor = 'rgba(255, 255, 255, 0.5)'
combinator = game.add.sprite(10, 15, 'Combinator')
comparer = game.add.sprite(100, 15, 'Comparer')
button = game.add.sprite(50, 15, 'Button')
button.inputEnabled = true;
button.input.enableDrag(true);
combinator.inputEnabled = true;
combinator.input.enableDrag(true);
comparer.inputEnabled = true;
comparer.input.enableDrag(true);
}
但我正在尝试为所有游戏对象创建一个 class,其中 inputEnabled= true 和 input.enableDrag(true),因此我只需要定义一次。我想是这样的:
class gameObject {
constructor () {
this.inputEnabled = true;
this.input.enableDrag(true);
}
}
但我无法理解如何在创建函数中使用它。我需要让 game.add.sprite(x,y,'name') 成为 class 的一部分吗?
您希望 class 继承自 Phaser.Sprite
class:
class gameObject extends Phaser.Sprite {
constructor (game, x, y, key) {
super(game, x, y, key);
this.inputEnabled = true;
this.input.enableDrag(true);
}
}
那么您的创建函数将如下所示:
function create() {
game.stage.backgroundColor = 'rgba(255, 255, 255, 0.5)'
combinator = game.add.existing(new gameObject(game, 10, 15, 'Combinator'))
comparer = game.add.existing(new gameObject(game, 100, 15, 'Comparer'))
button = game.add.existing(new gameObject(game, 50, 15, 'Button'))
}
您可以创建一个工厂 class 来为您创建精灵。
class SpriteFactory {
constructor(game) {
this.game = game
}
getDraggableSprite(...spriteParameters) {
const sprite = this.game.add.sprite(...spriteParameters)
sprite.inputEnabled = true
sprite.input.enableDrag(true)
return sprite
}
}
function create() {
game.stage.backgroundColor = 'rgba(255, 255, 255, 0.5)'
const spriteFactory = new SpriteFactory(game)
combinator = spriteFactory.getDraggableSprite(10, 15, 'Combinator')
comparer = spriteFactory.getDraggableSprite(100, 15, 'Comparer')
button = spriteFactory.getDraggableSprite(50, 15, 'Button')
}