Here is the source code of what I'm trying to do:
http://jsfiddle.net/3nGtM/
JavaScript:
window.addEventListener('load', function () { // get the canvas element and its context var canvas = document.getElementById('sketchpad'); var context = canvas.getContext('2d'); // create a drawer which tracks touch movements var drawer = { isDrawing: false, touchstart: function (coors) { context.beginPath(); context.moveTo(coors.x, coors.y); this.isDrawing = true; }, touchmove: function (coors) { if (this.isDrawing) { context.lineTo(coors.x, coors.y); context.stroke(); } }, touchend: function (coors) { if (this.isDrawing) { this.touchmove(coors); this.isDrawing = false; } } }; // create a function to pass touch events and coordinates to drawer function draw(event) { // get the touch coordinates var coors = { x: event.targetTouches[0].pageX, y: event.targetTouches[0].pageY }; // pass the coordinates to the appropriate handler drawer[event.type](coors); } // attach the touchstart, touchmove, touchend event listeners. canvas.addEventListener('touchstart', draw, false); canvas.addEventListener('touchmove', draw, false); canvas.addEventListener('touchend', draw, false); // prevent elastic scrolling document.body.addEventListener('touchmove', function (event) { event.preventDefault(); }, false); // end body.onTouchMove }, false); // end window.onLoad
HTML:
<body> <div id="container"> <canvas id="sketchpad" width="400" height="400">Sorry, your browser is not supported.</canvas> </div> </body>
CSS
body { margin:0; padding:0; font-family:Arial; } #container { position:relative; } #sketchpad { border: 1px solid #000; }
I tried adding event listeners for the mouse up / down / move, but they didn't seem to work.
Alternatively, if anyone has suggestions for using open source canvas apps that work on a computer and tablet, I would rather use this.
So far, only https://github.com/PlayMyCode/SkyBrush stands out, but unfortunately it does not work on Android tablets (at least the ones I could try).