类型错误:canvas.getContext 不是函数
2012-10-17
6890
我尝试使用画布元素在 Javascript 中为跟随光标的球设置动画。我将对画布对象的引用传递给名为 followMouse 的函数,但当我尝试获取其上下文时,firebug 给出了此错误:
TypeError: canvas.getContext is not a function
当我将画布引用记录到控制台时,它会显示画布元素。我不知道为什么我无法在函数中获取上下文。有人知道发生了什么吗?
这是我的代码:
function drawCircle(x, y, canvas) {
var context = canvas.getContext('2d');
context.beginPath();
context.arc(x, y, 40, 0, 2 * Math.PI);
context.fill();
}
function followMouse(canvas, mousePos) {
var context = canvas.getContext("2d");
console.log(canvas);
context.clearRect(0, 0, 700, 700);
var xPos = xPos + (mousePos.x - xPos) / 100;
var yPos = yPos + (mousePos.y - yPos) / 100;
drawCircle(xPos, yPos, canvas);
window.requestAnimFrame(followMouse, canvas);
}
window.onload = function() {
var canvas = document.getElementById("main");
var mousePos = {
x: 0,
y: 0
};
canvas.addEventListener('mousemove', function(evt) {
var pos = getMousePos(canvas, evt);
mousePos.x = pos.x;
mousePos.y = pos.y;
}, false);
followMouse(canvas, mousePos);
}
1个回答
您的行
window.requestAnimFrame(followMouse, canvas);
调用
followMouse(timestamp)
,其中 timestamp 是
requestAnimationFrame
触发回调时传递给回调的一个
数字
。这会导致调用
timestamp.getContext
,这显然是无效的。
相反,请将您的调用包装在匿名函数中:
window.requestAnimFrame(function() { followMouse(canvas, mousePos) }, canvas);
apsillers
2012-10-17