我正在尝试从json文件中获取数据以渲染tilemap。但是我一直Uncaught ReferenceError: renderTileMap is not defined
遇到此错误。
我试图将renderTileMap函数的主体放入$ .getJSON函数中,并且可以正常工作。地图在0.2毫秒内呈现,因此不再等待。 JSON文件也正确。我不知道为什么javascript无法看到此方法。
getData() {
$.getJSON(this.file, renderTileMap);
}
renderTileMap(json) {
var actPosX = this.beginPosX;
var actPosY = this.beginPosY;
var activeTile = 0;
var tiles = json.tiles;
var tilesResources = json.tilesResources;
var lines = tiles.length / this.lineSize;
var i, y;
for(i = 1; i < lines; i++) {
for(y = 1; y < this.lineSize; y++) {
ctx.fillStyle = tilesResources[tiles[activeTile]];
ctx.fillRect(actPosX,actPosY, this.tileWidth, this.tileHeight);
actPosX += this.tileWidth;
activeTile++;
}
actPosY += this.tileHeight;
actPosX = this.beginPosX;
}
}
答案 0 :(得分:2)
file
和renderTileMap
都不是getData
方法的变量,它们都是getData
(位于其中的对象)的上下文的一部分。您可以通过this
访问上下文,因此必须为:
$.getJSON(this.file, this.renderTileMap);
现在,在立即调用回调函数的同时,它会释放其上下文,因此您必须绑定它:
$.getJSON(this.file, this.renderTileMap.bind(this));
继续阅读: