我有一个球在画布上弹跳,我正试图改变球的速度,我不会让它上班。我正在努力实现速度,就像我在做球的颜色和球宽但不起作用。代码中的setInterval是改变速度但不能从speedx输入中获取值的。
的javascript:
function draw(){
var canvas = document.getElementById('ball');
context = ball.getContext('2d');
//context.clearRect(150,50,750,750);
context.beginPath();
context.fillStyle="#0000ff";
context.arc(x,y,10,20,Math.PI*2,true);
context.closePath();
lineColor = document.getElementById('lineColor').value;
lineWidth = document.getElementById('lineWidth').value;
speed = document.getElementById('speedx').value;
setInterval(draw,speed);
if (lineWidth)
{
context.lineWidth=lineWidth;
}
if (lineColor)
{
context.strokeStyle=lineColor;
context.stroke();
}
}
HTML:
Ball Width: <input type="text" id="lineWidth"></input>
Ball Color: <input type="text" id="lineColor"></input>
Ball Speed X:<input type="text" id="speedx"></input>
答案 0 :(得分:1)
好像你设置了一千个计时器而没有停止前面的计时器,因为你使用的是setInterval而不是setTimeout。这通常在每次调用绘图时创建一个新的计时器,并且每次每个计时器都有一个间隔时调用绘制。我认为这使得它始终以最快的速度运行。
此外,从此代码中不清楚x和y的设置位置。
此外,每次迭代找到上下文并非最佳性能。