Javascript 当x
在我的例子中,我使用的是Phaser框架 在这个例子中,我扩展了phaser的Group类。每一个“演员”级的精灵、团体。。。每隔几毫秒调用一次更新原型 我的想法是仅当应用程序在桌面上运行时才扩展此功能,而不是在电话上 例如: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
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()