功能的绘图画布等挂钩
问题描述:
嘿,伙计们在有关函数的另一个问题pushing- Here 然后我得到这个代码 -功能的绘图画布等挂钩
var postDrawHooks = [];
var draw = function(){
// do stuff
postDrawHooks.forEach(function(hook){hook()});
}
var playerUpdate = function(){...};
postDrawHooks.push(playerUpdate);
其中非常漂亮的工作,并允许您推送outide功能到另一个一个像你的游戏循环,而不必为每个游戏编辑你的engine.js文件,如果你想添加一个更新到一个对象只是推钩子。无论如何,我需要一种方式来推动像Context2D.drawImage(等等等等等等)。现在,当我尝试按下面的这种方式推送时,出现试图从null绘制的错误。
post_draw_render.push(context2D.drawImage(player.tilesheet, player.frameX,player.frameY, 46, 45, player.PosX, player.PosY+1, 46, 45));
我甚至不能使用Context2D.drawImage随时随地oustide我绘制函数,我不知道为什么什么想法吗? 引擎 -
//engine vars//
function init() {
canvas = document.getElementById('canvas');
context2D = canvas.getContext('2d');
setInterval(draw, 1000/FPS);
}
function draw() {
post_draw_function.forEach(function(hook){hook()});
gameloop();
context2D.clearRect(0, 0, canvas.width, canvas.height);
post_draw_render.forEach(function(hook){hook});
//Basic Draw - context2D.drawImage(playerImg, player.PosX, player.PosY);
//Tilesheet draw - context2D.drawImage(tilesheet, sx, sy, sw, sh, dx, dy, dw, dh);
context2D.fillStyle = "white";
context2D.font = 'bold 25px Times New Roman';
}
答
你是推到阵列中的对象不是一个函数,它是对的drawImage函数调用的返回值。
我想你想
post_draw_render.push(function() {
context2D.drawImage(player.tilesheet, player.frameX,player.frameY, 46, 45, player.PosX, player.PosY+1, 46, 45);
});
+0
非常感谢!这正是我所需要的 – 2011-12-22 21:20:18
我可能是完全错误的,但是这听起来像一个范围或优先的问题。由于某种原因,Context2D为空;所以它或者超出了最终钩子的范围,它在画布初始化之前被调用,或者在您正在使用的资源加载之前被调用。 – ceprovence 2011-12-22 19:10:12