Я действительно боролся с заголовком, но в основном я работаю над игрой в холсте html5 и имею класс под названием player с подклассом aiPlayer, когда вы играете против ai. Код для обновления игроков выглядит следующим образом:функция суперкласса вызывается при вызове функции подкласса
var entitiesCount = this.entities.length;
for (var i = 0; i < entitiesCount; i++) {
var entity = this.entities[i];
entity.update();
if (entity instanceof special && entity.x > WIDTH || entity.x + 200 < 0) {
this.entities.splice(i, 1);
entitiesCount--;
}
}
Однако aiPlayer никогда не обновляется с помощью функции обновления aiPlayer. Я распечатал конструктор каждого объекта, и есть один игрок и один aiPlayer. Однако при печати метода, который они вызывают, оба они вызывают обновление плеера. Кто-нибудь знает, почему он это сделает? Кроме того, если это поможет, то обновление aiPlayer выглядит следующим образом:
aiPlayer.prototype.update = function() {
if((this.game.timer.gameTime % this.moveTime) > (this.moveTime * 0.9)) {
this.chooseMove();
}
Player.prototype.update.call(this);
};
И аи конструктор выглядит следующим образом:
function aiPlayer (game, character, x, y, health) {
Player.call(this, game, character, x, y, health, PLAYER2_CONTROLS, "left");
aiPlayer.prototype = new Player(this.game, this.character, this.x, this.y,
this.health, this.control, this.facing);
aiPlayer.prototype.constructor = aiPlayer;
this.controls = PLAYER2_CONTROLS;
this.attackLength = 50;
this.fleeLength = 70;
this.moveTime = 1;
this.prevControl = "idle";
}