Я пытаюсь справиться с анимацией холста. Я наткнулся на отличный учебник по адресу http://www.kirupa.com/html5/creating_simple_html5_canvas_animation.htm (реквизит !!), но я пытаюсь сделать это немного дальше включением пользовательского взаимодействия в виде ввода, чтобы указать центр круга (я называю его «шириной») в приведенном ниже коде).Canvas Animation - Stuck
То, что я пробовал, находится ниже, и это работает в определенной степени. Вы увидите, что центр круга начинается с 175. Когда я вводил что-либо выше этого, круг перемещается вправо, как и в соответствии с моим кодом. Затем я могу ввести любое число меньше текущей точки, и оно будет двигаться влево, как и должно быть.
Однако !! После ввода первой цифры, будь то меньше или больше начальной точки, я затем пытаюсь ввести цифру, большую, чем текущая, и круг просто исчезает.
Я сбив с толку и объяснил, почему это происходит, и возможное решение ... если возможно.
Спасибо заранее, код у меня есть ...
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var requestAnimFrame = window.requestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.msRequestAnimationFrame;
var start = 175;
var startH = 250;
var radius = 175;
ctx.beginPath();
ctx.arc(start, startH, radius, 0, Math.PI * 2, false);
ctx.closePath();
ctx.fillStyle = "#006699";
ctx.fill();
function drawCircle() {
var width = document.getElementById("width").value;
if(start == width) {
start = width;
} else {
ctx.clearRect(0, 0, canvas.height, canvas.width);
ctx.beginPath();
ctx.arc(start, startH, radius, 0, Math.PI * 2, false);
ctx.closePath();
ctx.fillStyle = "#006699";
ctx.fill();
if(start < width) {
start += 1;
} else {
start -= 1;
}
requestAnimFrame(drawCircle);
}
}
'width' - значение поля ввода, справа? Но 'start' должен быть числом, а' width' - строкой ... что-то наверняка пойдет не так. – Xufox
Спасибо Xufox! Я использовал Number (document.getElementById ("width"). Value); и это прекрасно работает. Почему это всегда так просто ?! – Mike
Пример: 'start == width' вернет' true', когда '60 == '60'', но' start = width' сделает 'start' строку, и любой' start + = 1' после этого вернет '' 601 '','' 6011'' и т. Д. – Xufox