Javascript 当x

Javascript 当x,javascript,phaser-framework,Javascript,Phaser Framework,在我的例子中,我使用的是Phaser框架 在这个例子中,我扩展了phaser的Group类。每一个“演员”级的精灵、团体。。。每隔几毫秒调用一次更新原型 我的想法是仅当应用程序在桌面上运行时才扩展此功能,而不是在电话上 例如: var MousePointer = function (game, parent, name) { Phaser.Group.call(this, game, parent, name); this.init(); }; MousePointer.protot

在我的例子中,我使用的是Phaser框架

在这个例子中,我扩展了phaser的Group类。每一个“演员”级的精灵、团体。。。每隔几毫秒调用一次更新原型

我的想法是仅当应用程序在桌面上运行时才扩展此功能,而不是在电话上

例如:

var MousePointer = function (game, parent, name) {
  Phaser.Group.call(this, game, parent, name);
  this.init();
};

MousePointer.prototype = Object.create(Phaser.Group.prototype);
MousePointer.prototype.constructor = MousePointer;

MousePointer.prototype.init = function () {
  // ... init
};

MousePointer.prototype.update = function () {
  // Do something when on desktop
};
我不可能在更新函数中使用if子句来检查播放器是否在dekstop/tablet/phone上。那么,有没有一种方法可以在初始化时覆盖原型

例如,伪代码:

if(onPhone)
  MousePointer.prototype.update = parent.prototype.update;
else
  MousePointer.prototype.update = this.update;

嗯,你已经为自己写了答案,不是吗?此代码不在init方法内


我建议不要从常规函数开始,然后潜在地重写它,因为您只是徒劳地声明它。

我认为更好的方法是编写两个共享同一父类的不同类,然后为它们编写不同的更新实现。然后你可以做一些类似的事情:

if(phone) {
    var obj = new PhoneMousePointerObject();
} else {
    var obj = new DesktopMousePointerObject();
}
// ... later
obj.update()
if(phone) {
    var obj = new PhoneMousePointerObject();
} else {
    var obj = new DesktopMousePointerObject();
}
// ... later
obj.update()