我如何得到定义在画布绘制循环之外的函数在循环内可用
How do I get functions defined outside of a canvas draw loop to be useable within the loop?
我不能让这个简单的东西工作。
我在进入draw循环之前定义了一个函数。但这行不通。将函数中的代码直接放入循环中,它就会像魔法一样工作。我如何得到在绘制循环之外定义的函数在它内部工作?
<!DOCTYPE html>
<html>
<head>
</head>
<body onload="draw();">
<canvas id="canvas" width="500" height="500"></canvas>
<script type="application/javascript">
setInterval(draw,120);
var canvas = document.getElementById('canvas');
var dot = function(px,py) {
fillStyle = "rgb(0,0,0)";
ctx.fillRect(px,py,12,12)
};
function draw() {
if (canvas.getContext) {
var ctx = canvas.getContext("2d");
dot(34,34);
}
}
</script>
</body>
</html>
当你在绘制之外定义它时,你使用的ctx是不同的,因为js的作用域规则。你应该做的是将上下文传递给函数。
var dot = function(ctx,px,py) {
fillStyle = "rgb(0,0,0)";
ctx.fillRect(px,py,12,12)
};
function draw() {
if (canvas.getContext) {
var ctx = canvas.getContext("2d");
dot(ctx,34,34);
}
}
你可以考虑的另一件事是使上下文像画布一样成为一个全局变量,因为你将经常使用它。
var ctx = canvas.getContext("2d");
var dot = function(px,py) {
fillStyle = "rgb(0,0,0)";
ctx.fillRect(px,py,12,12)
};
function draw() {
if (canvas.getContext) {
dot(34,34);
}
}
相关文章:
- JavaScript/Jquery:一个特殊用途的for循环函数
- 为循环函数中的元素指定单击
- Jquery下一个和上一个按钮循环函数
- 循环函数(Javascript回调帮助)
- 循环函数不起作用
- 使用ajax调用循环函数
- 在Javascript中修改循环函数的参数
- 如何循环函数数组并在单击时一次执行一个
- 设置超时可以保存我的循环函数不被视为无响应
- 具有超时的循环函数
- j查询如何在一系列延迟后循环函数
- 如何将 JavaScript forEach 循环/函数转换为 CoffeeScript
- for 循环函数似乎未运行
- 对于内部循环函数(新手)
- 循环函数会导致它在 javascript 中无响应
- 循环函数
- 如何优化循环函数
- JS拒绝循环函数
- 中断循环函数
- 在 JavaScript 中循环函数可以吗?