代码之家  ›  专栏  ›  技术社区  ›  Mircea

HTML5移动画布对象

  •  3
  • Mircea  · 技术社区  · 16 年前

    我在同一个画布上创建了两个画布。有没有可能把那个黑色的小家伙拖来拖去?我想让它可拖动,但我找不到任何在线教程或演示。有可能吗?我曾期待画布移动或过渡,但我无法使它工作。

    密码在这里 http://jsfiddle.net/35P9F/2/

      var ctx = document.getElementById('canvas').getContext('2d');
    
      var radgrad3 = ctx.createLinearGradient(255,10,0,180,80,190);
      radgrad3.addColorStop(0, '#00C9FF');
      radgrad3.addColorStop(1, 'red');
    
      ctx.fillStyle = radgrad3;
      ctx.fillRect(0,0,255,255);
    
    
    
      var ctx4 = document.getElementById('canvas').getContext('2d');
      var radgrad4 = ctx4.createLinearGradient(0, 0, 0, 255);
      radgrad4.addColorStop(0, '#000000');
      radgrad4.addColorStop(1, '#ff0000');
    
      ctx4.fillStyle = radgrad4;
      ctx4.fillRect(0,0,25,25);
    

    谢谢您。

    2 回复  |  直到 14 年前
        1
  •  10
  •   Xanthir    16 年前

    简而言之:没有自动的方法。

    长答案: <canvas> 使用“立即模式”绘图,这意味着它不记得你以前做过什么。如果你给它一个命令,它会立即把它渲染成屏幕上的像素,然后忘记它。如果你想让屏幕上的某些东西表现得像是对鼠标的响应,你必须跟踪鼠标 你自己 并为每一帧重新绘制整个屏幕,每次都将黑色方块放在不同的位置。

    你可能想要的是一个“保留模式”的图形元素,这意味着它会记住你所做的事情,只在最后一刻将事情变成像素。svg就是一个很好的例子。当您在svg中绘制一些东西时,您可以像在html中一样创建实际的元素,并且可以更改它们的属性以使它们移动或更改,而不必每次都重新创建整个场景。

        2
  •  0
  •   WhoKnows    14 年前

    如果我没有弄错的话,可以在这个例子中找到您想要的: Canvas Object Movement

    当心!

    推荐文章