2010-12-17 7 views

Antwort

18

dieses ehrfürchtige Blogpost: http://www.jeffreyharrell.com/blog/2010/11/creating-a-shake-event-in-mobile-safari/

die in diesem Beispiel veranschaulicht:

if (typeof window.DeviceMotionEvent != 'undefined') { 
    // Shake sensitivity (a lower number is more) 
    var sensitivity = 20; 

    // Position variables 
    var x1 = 0, y1 = 0, z1 = 0, x2 = 0, y2 = 0, z2 = 0; 

    // Listen to motion events and update the position 
    window.addEventListener('devicemotion', function (e) { 
     x1 = e.accelerationIncludingGravity.x; 
     y1 = e.accelerationIncludingGravity.y; 
     z1 = e.accelerationIncludingGravity.z; 
    }, false); 

    // Periodically check the position and fire 
    // if the change is greater than the sensitivity 
    setInterval(function() { 
     var change = Math.abs(x1-x2+y1-y2+z1-z2); 

     if (change > sensitivity) { 
      alert('Shake!'); 
     } 

     // Update new position 
     x2 = x1; 
     y2 = y1; 
     z2 = z1; 
    }, 150); 
} 
+2

Excellent. Danke, dass du den Code-Extrakt hinzugefügt hast. Sollte hilfreich sein! – tbeseda

+3

Nur eine Warnung: accelerationIncludingGravity wird nie alle drei Komponenten Null haben. Wenn die Schwerkraft direkt auf eine Achse wirkt, hat diese Achse einen Wert von 9,81. Warum sollten Sie nicht während eines Events nach Shakes suchen? – ughoavgfhw

+0

@hughoavgfhw könnten Sie Ihren Code vorschlagen? – andi

Verwandte Themen