clearRect()的工作原理很奇怪
clearRect() works strangely
ClearRect的工作方式很奇怪;我试图刷新画布,但它不适用于此代码
<!DOCTYPE html>
<html>
<head>
<title> Crypt </title>
</head>
<body>
<canvas id="canvas" width="500" height="300" style="border-style: dashed;"></canvas>
<script type="text/javascript">
var can = document.getElementById("canvas") ,
ctx = can.getContext("2d") ,
posX = 0 ,
posY = 0 ;
function game(){ // HERE
ctx.clearRect(0, 0, can.width, can.height);
ctx.rect(posX, posY, 20, 20);
ctx.stroke();
posX += 10;
posY += 10;
}
window.setInterval("game()", 100);
</script>
</body>
</html>
适用于:
<!DOCTYPE html>
<html>
<head>
<title> Crypt </title>
</head>
<body>
<canvas id="canvas" width="500" height="300" style="border-style: dashed;"></canvas>
<script type="text/javascript">
var can = document.getElementById("canvas") ,
ctx = can.getContext("2d") ,
posX = 0 ,
posY = 0 ;
function game(){ // HERE
ctx.clearRect(0, 0, can.width, can.height);
ctx.strokeRect(posX, posY, 20, 20);
posX += 10;
posY += 10;
}
window.setInterval("game()", 100);
</script>
</body>
</html>
有人能解释吗?非常感谢。我真的不明白javascript是如何工作的,所以如果你有一些讲座,我会选择
谢谢^2
您面临的问题不是clearRect()
,而是您总是在同一Path对象上调用ctx.rect()
。
为了避免这种情况,您必须在每个新图形上调用ctx.beginPath()
:
var can = document.getElementById("canvas"),
ctx = can.getContext("2d"),
posX = 0,
posY = 0;
function game() {
ctx.clearRect(0, 0, can.width, can.height);
// create a new Path2d
ctx.beginPath();
ctx.rect(posX, posY, 20, 20);
ctx.stroke();
posX += 10;
posY += 10;
}
window.setInterval(game, 100);
<canvas id="canvas" width="500" height="300" style="border-style: dashed;"></canvas>
或者,您可以调用ctx.strokeRect()
,它在一个方法中处理ctx.beginPath();
、ctx.rect();
和ctx.stroke();
。
var can = document.getElementById("canvas"),
ctx = can.getContext("2d"),
posX = 0,
posY = 0;
function game() { // HERE
ctx.clearRect(0, 0, can.width, can.height);
ctx.strokeRect(posX, posY, 20, 20);
posX += 10;
posY += 10;
}
window.setInterval(game, 100);
<canvas id="canvas" width="500" height="300" style="border-style: dashed;"></canvas>
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- Kinectjs在画布上鼠标向下位置的准确性和clearRect未按预期工作
- 使画布的 clearRect() 工作得更快
- clearRect()的工作原理很奇怪
- clearRect()不工作在html5画布