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
에 정의되지 않았습니다 (속성 '위치'를 읽을 수 없음). 내가 이것을 다음과 같이 전달한다면 어떻게 될 수 있겠습니까? gMessages.handler[obj.type](obj);
분명히 여기 obj가 정의됩니다.
처리기를 설정할 때 함수가 아니라 반환 값으로 설정합니다. 'this.HandleBonus' 대신에 this.HandleBonus()를 호출하고 있습니다. 당신이 그것을 부를 때, 당신은 obj를 제공하지 않습니다. 어쩌면'()'을 벗으려고 시도하는 것이 가장 먼저 할 수 있을까요? –
오오, 잠잘 때가 된 것 같습니다. 원한다면 답변을 게시하십시오. 표시해 드리겠습니다. 감사! – asap