HTML5移动Canvas对象

Mir*_*cea 3 html5 canvas

我在同一个画布上创建了2个画布.是否可以拖动小黑色?我想让它可拖动,但我找不到任何在线教程或演示.可能吗?我曾经看过Canvas moveTo或者过渡但是我无法让它工作.

代码在这里 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);
Run Code Online (Sandbox Code Playgroud)

谢谢.

Xan*_*hir 10

简短的回答:没有自动的方法.

答案很长:<canvas>使用"立即模式"绘图,这意味着它不记得你之前做过的事情.如果你给它一个命令,它会立即将它渲染成屏幕上的像素,然后忘记它.如果你想在屏幕上的东西像它的响应鼠标,你必须跟踪鼠标自己和重绘整个屏幕的每一帧,每次把黑色方块在不同的位置.

您可能需要的是一个"保留模式"图形元素,这意味着它会记住您已完成的操作,并且只会在最后一刻将事物转换为像素.SVG就是一个很好的例子.当您在SVG中绘制内容时,您可以像在HTML中一样创建实际元素,并且可以更改其属性以使其移动或更改,而无需每次都重新创建整个场景.