Я пытаюсь сделать счетчик, чтобы каждый раз, когда вы нажимаете на мышь, он показывает количество кликов на холсте. Но это не обновление холста.
<!DOCTYPE html>
<html>
<body>
<canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>
<button onclick="function1()">Click Here</button>
<script>
var animate = setInterval(window.requestAnimationFrame,1)
var clicks = 0;
function function1()
{
clicks++;
document.getElementById('myCanvas').innerHTML = clicks;
};
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.font="16px Verdana";
ctx.fillText("Score: " + clicks,190,20);
</script>
</body>
</html>
Поэтому я изменил код, чтобы добавить функцию redraw()
чтобы перерисовать на холсте новый номер.
И функция increment()
вызовет это после выполнения clicks++
.
var clicks = 0;
function increment(){
clicks++;
redraw();
};
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
console.log(ctx);
function redraw(){
ctx.clearRect(0, 0, c.width, c.height);
ctx.font="16px Verdana";
ctx.fillText("Score: " + clicks,190,20);
}
redraw();
Вы не можете просто использовать innerHTML
для холста, потому что это действительно просто поверхность для рисования, поэтому на нее не влияет внутренняя DOM.
Ваш код выдает ошибку, window.requestAnimaitonFrame
требует обратного вызова функции как параметра. Этот код работает:
var animate = setInterval(function(){update()},1)
var clicks = 0;
function function1()
{
clicks++;
};
function update(){
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.clearRect(0,0,c.width,c.height);
ctx.font="16px Verdana";
ctx.fillText("Score: " + clicks,190,20);
}
requestAnimationFrame
сжигает процессор.