使用JavaScript在画布上跟踪一行

使用JavaScript在画布上跟踪一行,javascript,events,touch,html5-canvas,Javascript,Events,Touch,Html5 Canvas,我正在学习HTML5,我想学习的一个例子是在画布上创建2个点,我应该能够在这2个点之间绘制一条线并将它们连接起来,这应该在移动设备上使用鼠标和触摸事件来完成 是否有提供这些API的框架,或者是否有我可以开始学习的示例?我编写了一个非常基本的代码片段,可以帮助您开始学习: 我编写了一个非常基本的代码片段,它可能会帮助您入门: 就我个人而言,我喜欢在没有框架的情况下这样做,但是一些可用的框架包括和。你可以把触摸事件组合起来,计算出应该把点放在哪里;然后在他们之间划一条线。这个问题是非常开放的,快速的

我正在学习HTML5,我想学习的一个例子是在画布上创建2个点,我应该能够在这2个点之间绘制一条线并将它们连接起来,这应该在移动设备上使用鼠标和触摸事件来完成


是否有提供这些API的框架,或者是否有我可以开始学习的示例?

我编写了一个非常基本的代码片段,可以帮助您开始学习:


我编写了一个非常基本的代码片段,它可能会帮助您入门:


就我个人而言,我喜欢在没有框架的情况下这样做,但是一些可用的框架包括和。你可以把触摸事件组合起来,计算出应该把点放在哪里;然后在他们之间划一条线。这个问题是非常开放的,快速的谷歌搜索会让你找到答案。有关于webgl和canvas的很好的教程,而且大多数主要的javascript框架都可以帮助您获得移动设备支持,请查看jquery mobile和YUI。我个人喜欢在没有框架的情况下完成这项工作,但一些可用的框架包括和。你可以把触摸事件组合起来,计算出应该把点放在哪里;然后在他们之间划一条线。这个问题是非常开放的,快速的谷歌搜索会让你找到答案。有关于webgl和canvas的很好的教程,而且大多数主要的javascript框架将帮助您获得移动设备支持,请查看jquery mobile和YUI。
var ctx = $('canvas').get(0).getContext('2d');

$('canvas').mousedown(function(e) {
    ctx.beginPath();
    ctx.moveTo(e.offsetX, e.offsetY);
});

$('canvas').mouseup(function(e) {
    ctx.lineTo(e.offsetX, e.offsetY);
    ctx.stroke();
});
window.onload=function(){

var canvas = document.getElementById('canvas');
var ctx=canvas.getContext('2d');
var mouse={x:0,y:0}, down=false, lines=[]

canvas.addEventListener("mousedown",function(e) {
                                    down=true
                                    mouse={x:e.pageX,y:e.pageY}

                },false);

canvas.addEventListener("mousemove",function(e) {
                         this.width=this.width
                         lines.map(function(item){
                          ctx.beginPath()
                          ctx.moveTo(item[0].x, item[0].y);
                          ctx.lineTo(item[1].x, item[1].y);
                          ctx.stroke();
                           })
               if(down){
                   ctx.beginPath();
                   ctx.moveTo(mouse.x, mouse.y);
                   ctx.lineTo(e.pageX-this.offsetLeft, e.pageY-this.offsetTop);
                   ctx.stroke()
                   }

            },false);

canvas.addEventListener("mouseup",function(e) {
                         down=false
                         this.width=this.width
                         lines.push([{x:mouse.x,y:mouse.y},{x:e.pageX-this.offsetLeft,y:e.pageY-this.offsetTop}])
                         lines.map(function(item){
                              ctx.beginPath()
                              ctx.moveTo(item[0].x, item[0].y);
                              ctx.lineTo(item[1].x, item[1].y);
                              ctx.stroke();
                              })
                },false);
}