gpt4 book ai didi

javascript - 功能 Hook Canvas 等

转载 作者:行者123 更新时间:2023-11-30 18:34:37 25 4
gpt4 key购买 nike

大家好,关于函数推送的另一个问题- Here然后我得到了这个代码 -

var postDrawHooks = [];
var draw = function(){
// do stuff
postDrawHooks.forEach(function(hook){hook()});
}

var playerUpdate = function(){...};
postDrawHooks.push(playerUpdate);

它工作得非常好,并且允许您将一个外部函数推送到另一个函数中,例如您的游戏循环,而无需为每个游戏编辑您的 engine.js 文件,如果您想要向对象添加更新,只需按下钩子(Hook)即可。无论如何,我需要一种方法来插入绘图,如 Context2D.drawImage(blah blah blah);现在,当我尝试像下面这样推送时,我在尝试从 null 绘制时遇到错误。

post_draw_render.push(context2D.drawImage(player.tilesheet, player.frameX,player.frameY, 46, 45, player.PosX, player.PosY+1, 46, 45));

我什至不能在我的绘图功能之外的任何地方使用 Context2D.drawImage,我不知道为什么有任何想法?引擎 -

//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);
});

关于javascript - 功能 Hook Canvas 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8608439/

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