如何像拖放一样移动画布?

时间:2016-05-27 12:00:09

标签: javascript html

我需要通过触摸来移动整个画布,就像拖放动作一样

画布的位置应该来自

    flattenCanvas.height = canvas.height = SCREEN_HEIGHT - menu.container.offsetHeight;
canvas.style.position = 'absolute';
canvas.style.top = menu.container.offsetHeight+'px';
 canvas.style.left = -(menu.container.offsetHeight)/2+'px';
context = canvas.getContext("2d");

和绘图或滚动的触摸来自此

else if(event.touches.length == 1)  ////one finger scrolling
{

       canvas.style.top = (((event.touches[0].pageY)))+'px';
      canvas.style.left = (((event.touches[0].pageX)))+'px';

}

从上一个代码我可以通过一次触摸移动画布,但它不是真的拖动。 如何修复画布屏幕的运动?

这是webapp demo

的演示

1 个答案:

答案 0 :(得分:1)

根据these docs,您要处理的事件是touchmove

您问题中的代码似乎存在于touchstart处理程序中;只需在touchmove处理程序中执行相同的代码,即可在“拖动”期间不断更新。

更新

您要做的是通过触摸事件的“当前”(canvas)和“开始”之间的差异来抵消目标元素(在本例中为touchmove元素)({ {1}})职位。为此,您应该在touchstart处理程序中捕获目标和触摸的位置。然后,在touchstart处理程序中,取出触摸位置的差异,并将它们添加到目标的起始位置。这可能看起来像:

touchmove

Here's a live demo.