2012-06-06 94 views
4

我遇到问题,我试图在画布上用触摸事件绘制正方形,但它不起作用,有人可以帮我弄清楚为什么?使用触摸事件在HTML5画布上绘制正方形


这里是我到目前为止的代码:

JAVASCRIPT:

// "Draw Rectangle" Button 
function rect(){ 
var canvas = document.getElementById('canvasSignature'), ctx = canvas.getContext('2d'), rect = {}, drag = false; 

function init() { 
    canvas.addEventListener("touchstart", touchHandler, false); 
    canvas.addEventListener("touchmove", touchHandler, false); 
    canvas.addEventListener("touchend", touchHandler, false); 
} 


function touchHandler(event) { 
    if (event.targetTouches.length == 1) { //one finger touche 
    var touch = event.targetTouches[0]; 

    if (event.type == "touchstart") { 
     rect.startX = touch.pageX; 
     rect.startY = touch.pageY; 
     drag = true; 
    } else if (event.type == "touchmove") { 
     if (drag) { 
     rect.w = touch.pageX - rect.startX; 
     rect.h = touch.pageY - rect.startY ; 
     draw(); 
     } 
    } else if (event.type == "touchend" || event.type == "touchcancel") { 
     drag = false; 
    } 
    } 
} 

function draw() { 
    ctx.fillRect(rect.startX, rect.startY, rect.w, rect.h); 
} 

init(); 
} 

HTML5:

 <div id="canvasDiv"> 
    <canvas id="canvasSignature" width="580px" height="788px" style="border:2px solid #000; background: #FFF;"></canvas> 
</div> 



<div id="rect"> 
    <p><button onclick="rect();">Rectangle</button></p> 
</div> 

感谢agai n, Wardenclyffe

+0

你测试了哪些设备? – kevin628

+0

我一直在我的iPhone上测试它...... – Wardenclyffe

回答

1

在Chrome中进行了模拟触摸事件测试jsFiddle这个问题似乎是您绑定您的点击事件的方式。我刚刚使用jQuery。

或者没有jQuery:just a plain addEventListener

+0

那么我该如何修复它?我不知道我明白了。我在jsFiddle之前试过,它不会运行。 – Wardenclyffe