为什么不能'我'getData'函数可以被我的代码访问
Why can't my 'getData' function be accessed by my code?
对于大学,我必须使用MVC风格编码制作javascript游戏。(模型,视图,控制器)。我是新手,所以请不要太难。我得到以下错误:"未捕获的类型错误:无法读取未定义的属性'getData'"。谁能帮我找出问题所在吗?我确信我的代码充满了错误。我想把玩家模型画在画布上。任何和所有的帮助将不胜感激!下面是我的代码:
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");
};
因为M
和V
不是this
的一部分。它们的局部作用域是controller方法。
var M = new GOBLINS.Model();
var V = new GOBLINS.View();
应该this.M = new GOBLINS.Model();
this.V = new GOBLINS.View();
相关文章:
- 元素在我的代码中不会.fadeTo.Don'I don’我不知道;s错误的JavaScript、JQuery、H
- 验证我的代码json
- 如何创建更好的方式来维护基于我的代码访问的最后一个页面
- 我不知道为什么我的代码是错误的?又有什么错
- 我需要一个jQuery函数来只工作在700px以上的屏幕大小,无法在我的代码中发现错误
- I'我不知道为什么我的代码没有'不起作用
- 为什么动态加载的事件在我的代码中不能正常工作
- 如何禁用我的切换按钮?这是我的代码
- 我需要将条形图集成到我的代码中
- onbeforeunload事件在我的代码中没有触发,但其他示例可以工作
- 我的代码在<脚本>标记,但没有'不能在外部文件中工作
- 在我的代码中,实体类"卡片展示”;不起作用
- Webrtc和socket.io:createanswer()总是有一个错误.为什么?我的代码连接了两个对等体,但其中只
- 我的代码很完美,但我现在不知道为什么我发现了问题
- Html、css和jQuery.我的代码有问题
- 鼠标事件,我的代码出了什么问题
- 我怎样才能修复我的代码,以便<罢工>不会使我的 Javascript 代码无效
- 如何在我的“代码块”中使表格 Squarespace 网站响应式
- 如何使我的代码更快
- 在我的代码中管理大量硬编码数据的最佳方法