0
なり、私のコードです:オブジェクトは、ここで未定義
handler: {},
init: function() {
this.handler['Bonus'] = this.handleBonus();
},
handleReplica: function (msg) {
var gameObjects = JSON.parse(msg.data);
var survivors = new Set();
for (var i = 0; i < gameObjects.length; i++) {
var obj = gameObjects[i];
console.log(obj);
if (gMessages.handler[obj.type] === undefined)
continue;
survivors.add(obj.id);
gMessages.handler[obj.type](obj);
}
gGameEngine.gc(survivors);
},
handleBonus: function(obj) {
var bonus = gGameEngine.bonuses.find(function (el) {
return el.id === obj.id;
});
var position = Utils.getEntityPosition(obj.position);
if (bonus) {
bonus.bmp.x = position.x;
bonus.bmp.y = position.y;
} else {
bonus = new Bonus(obj.id, position, obj.bonusType);
gGameEngine.bonuses.push(bonus);
}
}
私は問題を抱えている部分だけを残してきました。そしてここにあります:obj
はhandleBonus
で未定義です(未定義のプロパティ 'position'を読み取ることはできません)。私が次のようにそれを渡しているなら、どうすればいいでしょう:gMessages.handler[obj.type](obj);
明らかに、ここではobjが定義されています。
ハンドラを設定するときは、ハンドラを関数ではなく戻り値に設定します。 'this.HandleBonus'を参照するのではなく、' this.HandleBonus() 'を呼び出しています。あなたがそれを呼び出すと、あなたはobjを提供しません。たぶん、 '()'を取り除くだけで、まず試してみるのだろうか? –
ああ、それは私が眠る時間のように見える...あなたがしたい場合は、答えを投稿して、私はそれをマークします。ありがとう! – asap