javascript - HTML5 Canvas 基本线条动画

标签 javascript html animation canvas

所以,我正在尝试通过一个小项目进入 HTML5 Canvas,该项目为现有标题制作动画,该标题由从一个点爆发的红色激光状线条组成。我能够按照自己的意愿绘制这些线条,并以不错的速度将它们作为一个整体进行动画处理,但我认为下一个障碍在我的脑海中:我希望每条线条都独立移动!

我有一个对象定义我的线条的起点,例如:

var myLines = {
      a: 1500,
      b: 700,
      c: 400,
      d: 310,
      e: 140,
      f: 60
    }

然后我用类似这样的循环绘制:

for (var i in myLines)
      {
        var cur = myLines[i];
        context.beginPath();
        context.moveTo(0, canvas.height);
        context.lineTo(canvas.width, myLine.y-cur);
        context.stroke();
      }

使用笨拙的递增方法:

var step = 1;

    if (myLine.y+step > canvas.height) {set = false;}
    if (myLine.y-step < 0) {set = true;}

    if (set) {
      myLine.y = myLine.y+step;

    } else {
      myLine.y = myLine.y-step;
    }

我知道上面的代码写得不好,我不适合这里,我白天在一个小厨房里当厨师,但我需要一些建议,谢谢!

Here's a fiddle看到这一切的行动。

提前致谢!

最佳答案

如果我是你,我会更改脚本,使每一行都是一个单独的对象,而不仅仅是一个偏移量。像这样的东西:

var line = { x: 0, y: 0, speed: 1 };

这样每一行都可以有自己的速度,在你的循环中,你可以做类似下面的事情来增加速度并在你到达屏幕边缘时翻转它:

line.x += line.speed;
if(/* edge of screen */) {
    line.speed = -line.speed;
}

关于javascript - HTML5 Canvas 基本线条动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13205148/

相关文章:

HTML rowspan 1,5(一个半)

html - 在jsoup中保留子节点的同时删除父节点

Flutter 使用内部动画为两条路线设置动画

ios - 动画 self.view.frame?

javascript - 回调嵌套和 this 的范围

javascript - jQuery:通过属性在 HTML 上使用选择器

html - Div Error,不留inline,margin-top不生效?

javascript - 如何使用 jQuery 从 HTML 表中将数据提取到关联数组中?

javascript - 从 Vuex Store 中的 action 中推送路由

ios - 仅在从urls数组加载所有图像之后才激事件画