gpt4 book ai didi

javascript - 绘制圆圈,然后使用 html canvas 和 javascript 移动它

转载 作者:行者123 更新时间:2023-11-28 19:08:29 33 4
gpt4 key购买 nike

我想知道如何使用html5的canvas画一个圆并移动它。我已经有了画圆的代码,但完成后,我想拖动它。我试图弄清楚按照操作顺序(绘制 --> 移动)的代码的实现,但不确定如何使用 Canvas 和 JS 来构建它。有人可以帮助我吗?

下面是我的代码:

HTML

<body>
<h1>Circle</h1>
<div class="circle">
<canvas id="myCanvasCircle" width="500" height="500"> your browser does not support HTML5 canvas tag.</canvas>

</div>

</body>

JS

<script>

var canvas = document.getElementById('myCanvasCircle'),
ctx = canvas.getContext('2d'),
circle = {},
drag = false;

function draw() {
ctx.beginPath();
ctx.arc(circle.X, circle.Y, circle.radius, 0, 2.0 * Math.PI);
ctx.stroke();

}

function mouseDown(e) {

circle.startX = e.pageX - this.offsetLeft;
circle.startY = e.pageY - this.offsetTop;

circle.X = circle.startX;
circle.Y = circle.startY;

circle.radius = 0;

drag = true;
}

function mouseUp() {
drag = false;

}

function mouseMove(e) {
if (drag) {
circle.X = e.pageX - this.offsetLeft;
circle.Y = e.pageY - this.offsetTop;
circle.radius = Math.sqrt(Math.pow((circle.X - circle.startX), 2) + Math.pow((circle.Y - circle.startY), 2));
ctx.clearRect(0, 0, canvas.width, canvas.height);
draw();


}
}

function init() {
canvas.addEventListener('mousedown', mouseDown, false);
canvas.addEventListener('mouseup', mouseUp, false);
canvas.addEventListener('mousemove', mouseMove, false);

}

init();

</script>

最佳答案

如果您只想绘制一个圆圈,则修改代码即可相当简单。

http://jsfiddle.net/15dkrakj/2/

circleMade = false;

//In mouseDown
if (!circleMade) {
circle.radius = 0;
}

function mouseUp() {
drag = false;
circleMade = true;
}

//In mouseMove
if (!circleMade) {
circle.radius = Math.sqrt(Math.pow((circle.X - circle.startX), 2) + Math.pow((circle.Y - circle.startY), 2));
}

只是在第一次鼠标向下和向上后不要更改半径。

如果您希望能够绘制多个圆圈,然后拖动每个圆圈......那就有点复杂了。

回答评论中的问题:

http://jsfiddle.net/15dkrakj/3/

mouseMoved = false

//In mouse up
if(!mouseMoved){
circle = {};
circleMade = false;
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
mouseMoved = false;

function mouseMove(e) {
if (drag) {
mouseMoved = true;
...

这会跟踪鼠标是否被按下并移动。如果按下鼠标时没有移动,则在鼠标松开时清除屏幕并清空圆圈。

关于javascript - 绘制圆圈,然后使用 html canvas 和 javascript 移动它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31185484/

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