1
我正在学习HTML5,我想学习的一个示例是在画布上创建2个点,并且我应该能够在2个点之间跟踪一条线并加入它们,应该在移动设备上使用鼠标和触摸事件来完成。使用JavaScript在画布上跟踪一条线
是否有任何提供这些API的框架,或者是否有任何可以开始使用的示例?
我正在学习HTML5,我想学习的一个示例是在画布上创建2个点,并且我应该能够在2个点之间跟踪一条线并加入它们,应该在移动设备上使用鼠标和触摸事件来完成。使用JavaScript在画布上跟踪一条线
是否有任何提供这些API的框架,或者是否有任何可以开始使用的示例?
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);
}
我编写了一个非常基本的代码片段,可以帮助您开始:http://jsfiddle.net/vF4dY/。
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();
});
个人而言,我喜欢这样做没有框架,但一些可用的框架包括http://raphaeljs.com/和http://processingjs.org/。您可以结合触摸事件并计算应放置点的位置;然后在它们之间划一条线。 – pimvdb 2011-04-01 21:31:07
这个问题是非常开放的,快速的谷歌搜索会给你带来很大的答案。有关于webgl和canvas的很好的教程,大多数主要的javascript框架也会帮助你支持移动设备,查看jquery mobile和YUI。 – idbentley 2011-04-01 21:32:30