gpt4 book ai didi

javascript - 为什么我的代码无法访问 'getData' 函数?

转载 作者:行者123 更新时间:2023-11-27 23:49:42 27 4
gpt4 key购买 nike

对于大学来说,我必须制作一个带有 MVC 风格编码的 JavaScript 游戏。 (模型、 View 、 Controller )。我对此很陌生,所以请不要太难。我收到以下错误:“未捕获类型错误:无法读取未定义的属性“getData””。有人可以帮我找出问题所在吗?我确信我的代码充满了错误。我正在尝试将玩家模型绘制在 Canvas 上。任何和所有的帮助将不胜感激!这是我的代码:

var GOBLINS = GOBLINS || {};

GOBLINS.View = function() {};

GOBLINS.View.prototype.draw = function(objects) {

for(i=0; i < objects.length; i++) {
ctx.drawImage(objects[i],0,0);
};
};

GOBLINS.View.prototype.update = function(data){
this.draw(data);
};

GOBLINS.Model = function() {
this.data = [];
};

GOBLINS.Model.prototype.player = {
hitPoints: 25,
x: 15,
y: 20,
img: new Image(),
push: function() {
data.push(GOBLINS.Model.player.img);
}
};

GOBLINS.Model.prototype.getData = function(recall){
recall(this.data);
};

GOBLINS.Controller = function() {
var M = new GOBLINS.Model();
var V = new GOBLINS.View();

this.mainLoop();
};

GOBLINS.Controller.prototype.mainLoop = function() {
var self = this;

this.M.getData(function(data){
self.V.update(data);
});

window.requestAnimationFrame(function(){
self.mainLoop();
});
};

window.onload = function() {
var game = new GOBLINS.Controller();

GOBLINS.Model.player.img.src = "Image/Player.png";
var c=document.getElementById("gameCanvas");
var ctx=c.getContext("2d");
};

最佳答案

因为MV不是this的一部分。它们的范围仅限于 Controller 方法的本地范围。

var M = new GOBLINS.Model();
var V = new GOBLINS.View();

应该是

this.M = new GOBLINS.Model();
this.V = new GOBLINS.View();

关于javascript - 为什么我的代码无法访问 'getData' 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32823187/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com