gpt4 book ai didi

javascript - html5动画: canvas clearing works but everything is redrawn

转载 作者:行者123 更新时间:2023-12-02 17:59:03 25 4
gpt4 key购买 nike

我想要一个圆圈在我的 Canvas 上移动。

因此,对于动画的每一帧,我都会清除 Canvas 并使用新的原点坐标绘制一个新圆圈。

逐步执行我的代码,我可以看到 clearRect 函数运行良好,但每次重新绘制 Canvas 时,都会绘制新的圆和所有先前的圆,包括从第一个圆心到新圆心。

文件index.html:

  <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>my website</title>
</head>
<body onLoad="init();">
<canvas class="circle" id="pinkCircle" width="400" height="400"
style="border:1px solid pink;">
</canvas>
<script src="js/myjs.js"></script>
</body>
</html>

文件js/myjs.js:

//set variables
var canvas;
var context;
var myCircle = {x:50,y:100,r:20};
//offset
var dx = 8;
var dy = 5;
function init() {
//set canvas and its context
canvas = document.getElementById('pinkCircle');
context = canvas.getContext('2d');
//repeat the drawCircle function for each frame
setInterval(drawCircle,1000);
}
function drawCircle() {
//clear the canvas
context.clearRect(0,0,canvas.width,canvas.height);
//redraw a circle with a different origin coordinates each time
context.beginPath;
context.arc(myCircle.x, myCircle.y, myCircle.r, 0, 2 * Math.PI, true);
context.closePath();
context.stroke();
if( myCircle.x<0 || myCircle.x>400) dx=-dx;
if( myCircle.y<0 || myCircle.y>400) dy=-dy;
myCircle.x+=dx;
myCircle.y+=dy;
}

我浏览了很多在线资源,但我无法找出问题所在。

最佳答案

你的代码几乎是正确的。但你犯了一个小错误:没有在下面的行中给出圆括号:

context.beginPath;

应该是:

context.beginPath();

工作中JS Bin Link

关于javascript - html5动画: canvas clearing works but everything is redrawn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20719124/

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