javascript - 如何从 Canvas 中删除对象?

标签 javascript canvas

我正在制作这个脚本,它将使用 Canvas 在转速表上旋转指针。我是这个 Canvas 的新手。这是我的代码:

function startup() {
  var canvas = document.getElementById('canvas');
  var context = canvas.getContext('2d');
  var meter = new Image();
  meter.src = 'background.png';
  var pin = new Image();
  pin.src = 'needle.png';
  context.drawImage(meter,0,0);
  context.translate(275,297);
  for (var frm = 0; frm < 6000; frm++){
    var r=frm/1000;               //handle here                                
    var i=r*36-27;  //angle of rotation from value of r and span
    var angleInRadians = 3.14159265 * i/180;  //converting degree to radian                
    context.rotate(angleInRadians); //rotating by angle
    context.drawImage(pin,-250,-3);  //adjusting pin center at meter center
  }
}

这是运行中的脚本:

http://www.kingoslo.com/instruments/

问题是,如您所见,每个 for 循环之间的红色针没有被移除。

我需要做的是在循环的每个周期之间清除 pin 对象的 Canvas 。我该怎么做?

谢谢。

亲切的问候,
马吕斯

最佳答案

使用clearRect清除 Canvas (它的一部分或整个东西)。 HTML canvas 对象只是像素的平面位图,因此在 Canvas 上没有“对象”的概念。

另请记住,JavaScript 是单线程的,因此您的 for 循环不会为指针设置动画,它只会坐在那里并绘制所有更新,完成后浏览器实际上会使用最新状态刷新可见 Canvas 。

如果你想让它动起来,你必须创建一个渲染循环。 Dev.Opera 有一篇关于 framerate control 的文章,这应该让你开始了,然后你只需要在每一帧上为你的针设置动画。

关于javascript - 如何从 Canvas 中删除对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4535914/

相关文章:

javascript - Whatsapp 链接打不开 Whatsapp 应用程序

javascript - 将视频和 Canvas 大小调整为最大尺寸

javascript - 未捕获的类型错误 : Cannot set property of 'fillStyle' of null HTML5 Javascript

javascript - 在Qualtrics中,如何动态连接两个 slider ?

canvas - HTML5 Canvas 运动模糊效果?

javascript - EaselJS:通过鼠标按下触发添加子项

android - 在 0x09050941(代码=1)处获取错误致命信号 11(SIGSEGV)关于使用 Canvas 制作圆形图像

php - 如何使用javascript禁用 "save page as"?

javascript - this._get 不是一个函数 - javascript oop 和原型(prototype)

javascript - 通过AJAX从$_SESSION发送变量到PHP进行密码更改,怎么做?