如何將圓圈連續放置在隨機位置?
我想把這個圓圈放在隨機位置,比如從一個隨機位置跳到另一個位置等等......請回答怎么做?
let canvas = document.getElementById("canvas");
let context = canvas.getContext("2d");
// for canvas size
var window_width = window.innerWidth;
var window_height = window.innerHeight;
canvas.width = window_width;
canvas.height = window_height;
let hit_counter=0;
function randomIntFromInterval(min, max) { // min and max included
return Math.floor(Math.random() * (max - min 1) min)
}
class Circle {
constructor(xpos, ypos, radius, color, text) {
this.position_x = xpos;
this.position_y = ypos;
this.radius = radius;
this.text = text;
this.color = color;
}
// creating circle
draw(context) {
context.beginPath();
context.strokeStyle = this.color;
context.fillText(this.text, this.position_x, this.position_y);
context.textAlign = "center";
context.textBaseline = "middle"
context.font = "20px Arial";
context.lineWidth = 5;
context.arc(this.position_x, this.position_y, this.radius, 0, Math.PI * 2);
context.stroke();
context.closePath();
}
update() {
if(hit_counter%70 == 0){
this.text =Math.floor((randomIntFromInterval(1, 20)));
hit_counter = 1;
}
hit_counter ;
context.clearRect(0, 0, window_width, window_height)
this.draw(context);
if ((this.position_x this.radius) > window_width) {
this.dx = -this.dx;
}
if ((this.position_x - this.radius) < 0) {
this.dx = -this.dx;
}
if ((this.position_y - this.radius) < 0) {
this.dy = -this.dy;
}
if ((this.position_y this.radius) > window_height) {
this.dy = -this.dy;
}
this.position_x = this.dx;
this.position_y = this.dy;
}
}
let my_circle = new Circle(100, 100, 50, 'Black', hit_counter);
my_circle.update();
<canvas id="canvas"></canvas>
uj5u.com熱心網友回復:
您可以使用setInterval在延遲時間后呼叫函式。
根據您的代碼片段,我建議使用setInterval來構造然后在新位置破壞一個圓圈:
// Circle Definition
...
const WAIT_TIME_IN_MS = 3000;
let circle = new Circle(x, y, 50, 'Black', hit_counter); // Assuming you want one circle
const interval = setInterval(() => {
circle.update();
}, WAIT_TIME_IN_MS);
只需在呼叫Circle.position_x之前Circle.position_y從內部更新:Circle.update Circle.draw
...
update() {
...
context.clearRect(0, 0, window_width, window_height);
this.position_x = randomIntFromInterval(window_width, window_height);
this.position_y = randomIntFromInterval(window_width, window_height);
...
}
...
當你想停止這個間隔時,你可以呼叫clearInterval(interval).
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/439731.html
標籤:javascript jQuery css 帆布 html5-画布
