gpt4 book ai didi

javascript - HTML5 Canvas - 轮子旋转功能行为异常

转载 作者:可可西里 更新时间:2023-11-01 13:03:31 25 4
gpt4 key购买 nike

在 HTML5 canvas 中,我有一个轮子,我试图旋转它,但轮子的 Action 真的很疯狂。它在屏幕周围摆动,离开屏幕又进入屏幕。

var canvas = document.getElementById("my-canvas");
var ctx = canvas.getContext("2d");

var img = new Image();
img.src = "http://www.roulette30.com/wp-content/uploads/americanroulette.png";

ctx.drawImage(img, 70, 70, 200, 200);

function spinWheel() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.translate(0, 0, canvas.width, canvas.height);
ctx.rotate(1 * Math.PI / 180);
ctx.drawImage(img, 70, 70, 200, 200);
}

setInterval(spinWheel, 0);
#my-canvas {
border: 1px solid black;
}
<!--<img id="my-image" height="200" width="200" src="http://www.roulette30.com/wp-content/uploads/americanroulette.png">
-->
<canvas id="my-canvas" width="400" height="400"></canvas>

我确信如果我调用 translate 方法,我总是可以将滚轮定位在屏幕中央。与 rotate 一起,这肯定会奏效。

欢迎任何见解。

最佳答案

您需要在自旋代码之外转换为死点的半宽/半高。

var canvas = document.getElementById("my-canvas");
var ctx = canvas.getContext("2d");

var img = new Image();
img.src = "http://www.roulette30.com/wp-content/uploads/americanroulette.png";

var speed = 1; // adding increases speed
var loop = true;

ctx.translate(canvas.width/2, canvas.height/2);

function spinWheel() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.rotate(speed * Math.PI / 180);
ctx.drawImage(img, -(img.width/2), -(img.height/2));
if (loop) requestAnimationFrame(spinWheel);
}

spinWheel();
#my-canvas {
border: 1px solid black;
}
<canvas id="my-canvas" width="400" height="400"></canvas>

关于javascript - HTML5 Canvas - 轮子旋转功能行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36050751/

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