我需要在每次調用函數drawImage()時在畫布2D上下文中執行一些代碼。如何在純JavaScript中重寫原生JS函數(canvas的drawImage())?
game.canvas = document.getElementById('canvas');
game.ctx = game.canvas.getContext("2d");
不幸的是,它並不像看起來那麼容易。
我試着這樣做:
game.ctx.drawImageOld = game.ctx.drawImage;
game.ctx.drawImage = function(i,x,y,u,v){console.log("ok"); game.ctx.drawImageOld(i,x,y,u,v);}
game.ctx.drawImage(myImage, 10, 10);
// logs "ok" two times on FF
這
CanvasRenderingContext2D.prototype.drawImageOld = CanvasRenderingContext2D.prototype.drawImage;
CanvasRenderingContext2D.prototype.drawImage = function(i,x,y,u,v){console.log("ok"); this.drawImageOld(i,x,y,u,v);}
game.ctx.drawImage(myImage, 10, 10);
// logs "ok" two times
但永遠不會執行本地的drawImage ...
我該怎麼辦呢?還有另一種「檢測」功能調用的方法嗎?
謝謝。
感謝'this.drawImageOld'而不是'CanvasRenderingContext2D.prototype.drawImageOld' –
謝謝,但它也記錄了兩次「ok」。 –