Я пытаюсь увеличить радиус круга, нарисованного в холсте, с использованием функций JavaScript.Обновление холста на клик с помощью Javascript
Существовало много тем с подобными проблемами, но не смогли найти ответ, который фиксировал бы эта, я попытался с помощью встроенных методов, которые были предложены, как setInterval
, setTimeout
, window.requestAnimationFrame
и очистным холст, чтобы перерисовать круг с обновленной переменной.
До сих пор метод setInterval
отображал обновление, но сохранял предыдущие итерации в холсте, метод clear не работает.
Вот пример:
//Define globals
var radiusIncrement = 5;
var ballRadius = 20;
//Helper functions
function increaseRadius() {
ballRadius += radiusIncrement;
}
function decreaseRadius() {
if (ballRadius > 0) {
ballRadius -= radiusIncrement;
}
}
//Draw handler
function draw() {
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(canvas.height/2,canvas.width/2,ballRadius,0,2*Math.PI);
ctx.stroke();
}
//Event handler
setInterval(function() {
draw();
ctx.clearRect(0,0,canvas.width,canvas.height);
}, 100);
<!--Create frame and assign callbacks to event handlers-->
<button type="button" onclick="increaseRadius()">Increase Radius</button>
<button type="button" onclick="decreaseRadius()">Decrease Radius</button>
<canvas id="myCanvas" width="400" height="400" style="border:1px solid #000000;"></canvas>
Вместо использования setInterval, есть способ, чтобы упростить код, используя и использовать обработчик событий, чтобы обновить холст на каждом onlick?
Благодарим за помощь.
Cheers.
Фантастично, спасибо большое Мауро, это своего рода оптимизированное решение, которое я искал. Как-то мяч исчезает около 0, это должно быть легко исправить. : D – xGLUEx
Привет Мауро, на самом деле он работает, он просто так мал, что он исчезает под радиусом 5;) – xGLUEx
Удивительный, рад, что я мог бы помочь! –