javascript - 扩展 Phaser.js 类

标签 javascript oop phaser-framework

我正在使用 Phaser 框架,我想创建一个新类来保存 Phaser 中 sprite 类的所有属性,所以我尝试这样做

var mario = function(){

    Phaser.Sprite.call(this); // inherit from sprite
};

但是出现错误“Uncaught TypeError: undefined is not a function”

然后我试了

var mario = function(){

   this.anything = "";

};

mario.prototype = new Phaser.Sprite();

好的,它可以工作,但它调用了移相器构造函数,我不想创建 Sprite ,直到我执行 var heroObj = new mario();

我该怎么办?

最佳答案

这样试试。我添加了一个命名空间以避免全局变量。

var YourGameNSpace = YourGameNSpace || {};

YourGameNSpace.Mario = function (game) {
    'use strict';

    Phaser.Sprite.call(this, game);
};

// add a new object Phaser.Sprite as prototype of Mario 
YourGameNSpace.Mario.prototype = Object.create(Phaser.Sprite.prototype);
// specify the constructor
YourGameNSpace.Mario.constructor = YourGameNSpace.Mario;

//add new method
YourGameNSpace.Mario.prototype.init = function () {
    'use strict';
    ...
};

在你可以实例化它之后:

var mario = new YourGameNSpace.Mario(game);

关于javascript - 扩展 Phaser.js 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29231281/

相关文章:

javascript - 在 Javascript 中循环遍历 JSON 数组元素

javascript - 复杂的 Mongo 查询,同时检查多个属性

java - 具有两个方法参数的访问者模式

javascript - 使用复选框和 list.js 应用多个过滤器

javascript - 反序列化 JavaScript 对象实例

javascript - 为什么可以在不引用 'this' 的情况下操作对象属性

javascript - 移相器 : how to load assets after preload?

javascript - Tilemap 与玩家碰撞并作为一个实体移动(Phaser 3)

javascript - 移动时阻止玩家滑动

javascript - 设置多个属性时如何限制号码变化事件?