嘿,夥計們在有關函數的另一個問題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';
}
我可能是完全錯誤的,但是這聽起來像一個範圍或優先的問題。由於某種原因,Context2D爲空;所以它或者超出了最終鉤子的範圍,它在畫布初始化之前被調用,或者在您正在使用的資源加載之前被調用。 – ceprovence 2011-12-22 19:10:12