我试着用手指在canvas元素中写字。它适用于桌面浏览器,但不适用于ipad 我也尝试使用touchstart,touchend,touchmove事件,但它在ipad上无效。
var pizarra_canvas
var pizarra_context
function init(){
pizarra_canvas = document.getElementById("pizarra");
pizarra_context = pizarra_canvas.getContext("2d");
pizarra_context.strokeStyle = "#000";
pizarra_canvas.addEventListener('mousedown',empezarPintar,false);
pizarra_canvas.addEventListener('mouseup',terminarPintar,false);
}
function empezarPintar(e){
pizarra_context.beginPath();
pizarra_context.moveTo(e.clientX-pizarra_canvas.offsetLeft,e.clientY-pizarra_canvas.offsetTop);
pizarra_canvas.addEventListener('mousemove',pintar,false)
}
function terminarPintar(e){
pizarra_canvas.removeEventListener('mousemove',pintar,false);
}
function pintar(e) {
pizarra_context.lineTo(e.clientX-pizarra_canvas.offsetLeft,e.clientY-pizarra_canvas.offsetTop);
pizarra_context.stroke();
}
答案 0 :(得分:3)
您需要取消默认事件(滚动)。另外,最好在文档上触发mouseup / touchend,因为如果你离开拖动区域并释放按钮,那么画布不知道它应该停止绘制。
var pizarra_canvas
var pizarra_context
function init(){
pizarra_canvas = document.getElementById("pizarra");
pizarra_context = pizarra_canvas.getContext("2d");
pizarra_context.strokeStyle = "#000";
pizarra_canvas.addEventListener('mousedown',empezarPintar,false);
pizarra_canvas.addEventListener('touchstart',empezarPintar,false);
document.addEventListener('mouseup',terminarPintar,false);
document.addEventListener('touchend',terminarPintar,false);
}
function empezarPintar(e){
e.preventDefault();
pizarra_context.beginPath();
pizarra_context.moveTo(e.pageX-pizarra_canvas.offsetLeft,e.pageY-pizarra_canvas.offsetTop);
pizarra_canvas.addEventListener('mousemove',pintar,false)
pizarra_canvas.addEventListener('touchmove',pintar,false)
}
function terminarPintar(e){
e.preventDefault();
pizarra_canvas.removeEventListener('mousemove',pintar,false);
pizarra_canvas.addEventListener('touchmove',pintar,false)
}
function pintar(e) {
e.preventDefault();
pizarra_context.lineTo(e.clientX-pizarra_canvas.offsetLeft,e.clientY-pizarra_canvas.offsetTop);
pizarra_context.stroke();
}
init();
另外,你的css应该在触控设备上有这样的东西:
body, html {
height: 100%;
overflow: hidden;
}