Javascript touch events

Jakub Lemiszewski

Utente Attivo
5 Dic 2013
119
1
0
Salve,

Per un progetto di scuola ho dovuto creare uno script js usando i touch events. Quello che ho fatto è praticamente uno cript che permette su device touch screen di disegnare pero ho un problema. Il problema e che vorrei sincronizzare il momento del tap con l'apparire della riga colorata, se lo provate vedrete che non ce sincronizzazione tra il tap e la riga che appare. Altra cosa che devo implementare e un mouseover per avere lo stesso effetto sul browser perchè al momento funziona solo sui device. Comunque ogni idea di come migliorare lo script e bene accetta. Grazie dell'aiuto.
Codice:
HTML:
<head>
  	<meta charset="utf-8" />
    <meta id="viewport" name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
    <title>
      Jake's Multitouch
    </title>
    <link rel="stylesheet" href="paint.css">

	  <script>
      var canvas;
      var ctx;
      var lastPt = new Object();
      var colours = ['red', 'green', 'blue', 'yellow','black'];
      function init() {
        var touchzone = document.getElementById("canvasbox");
        touchzone.addEventListener("touchmove", draw, false);
        touchzone.addEventListener("touchend", end, false);
        canvas = document.getElementById('canvasbox');
        ctx = canvas.getContext("2d");
      }
      
      function draw(e) {
        e.preventDefault();
        console.log(e);
        
        for(var i=0;i<e.touches.length;i++) {
          var id = e.touches[i].identifier;
          if(lastPt[id]) {
            ctx.beginPath();
            ctx.moveTo(lastPt[id].x, lastPt[id].y);
            ctx.lineTo(e.touches[i].pageX, e.touches[i].pageY);
            ctx.strokeStyle = colours[id%4];
            ctx.lineWidth = 3;
            ctx.stroke();
          }
          lastPt[id] = {x:e.touches[i].pageX, y:e.touches[i].pageY};
        }
      }
      
      function end(e) {
        e.preventDefault();
        for(var i=0;i<e.changedTouches.length;i++) {
          var id = e.changedTouches[i].identifier;
          delete lastPt[id];
        }
      }
      
    </script>
  </head>
  
  <body onload="init()">
    <canvas id="canvasbox">
      Canvas element not supported.
    </canvas>
  </body>
Codice:
#canvasbox {
	position: relative;
	margin: auto;
	width: 500px;
	height: 500px;
	border: 1px black solid;
}
 

Discussioni simili