我正在製作一個彈跳球動畫。我想要一個表格(num1和num 2),它應該用變量「int1」或「int2」作爲「draw1」或「draw2」的計時器。加載文件並在文本框中輸入數字,然後提交它們不會改變間隔。我真的需要幫助。「setInterval」的定時器是一個變量
<!DOCTYPE HTML>
<head>
<title>Follow the Bouncing Ball</title>
<script>
var context;
var x=50;
var y=240;
var dx=5;
var dy=5;
var int1=form.getElementById('num1').value;
var int2=form.getElementById('num2').value;
function init()
{
context=myCanvas.getContext('2d');
setInterval(draw1,int1)
setInterval(draw2,int2)
}
function draw1()
{
context.clearRect(0,0, 100,500);
context.beginPath();
context.fillStyle="#0000ff";
context.arc(x,y,30,0,Math.PI*2,true);
context.closePath();
context.fill();
//Boundary Logic
if(y<35 || y>470) dy=-dy;
y+=dy
}
function draw2()
{
context.clearRect(100,0, 200,500);
context.beginPath();
context.fillStyle="#0000ff";
context.arc(x+150,y,30,0,Math.PI*2,true);
context.closePath();
context.fill();
//Boundary Logic
if(y<30 || y>450) dy=-dy;
y+=dy
}
function validate(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode(key);
var regex = /[0-9]|\./;
if(!regex.test(key)) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
</script>
<body onLoad="init()">
<canvas id="myCanvas" width="1300" height="500">
</canvas>
<form>
<input type="number" id="num1" min="1" placeholder="Enter Number" autofocus required onkeypress='validate(event)'/>
<input type="number" id="num2" min="1" placeholder="Enter Number" required onkeypress='validate(event)'/>
<input type="submit" value="Animate">
</form>
</body>
</html>
我真的不能用窗體中鍵入的數字替換「int1」或「int2」。
一旦間隔開始,它需要它再次調用之前就已經通過了,並且你不能改變它的時候。 解決方法是使用遞歸timeOut而不是 – adeneo