การจับการเครื่อนไหวหรือที่เรียกว่า Event Motion ของโทรศัพท์มือถือมีมานานแล้ว (แต่ผมเพิ่งรู้ไม่นานมานี้ ตกเทรนไปหลายขุมเลย ฮ่าๆ) แต่ส่วนใหญ่นิยมใช้ในการทำ Application บน IOS หรือ Android ซะมากกว่า แต่จริงๆแล้วใน Website ที่เปิดในมือถือแล้วใช้ Browser ในการอ่านก็สามารถทำได้
ซึ่งปัจจุบันก็มีหลายที่เช่นกันที่ได้เริ่มทำออกมาเป็นรูปร่าง ในแบบต่างๆ ซึ่งวิธีการก็ไม่ได้ซับซ้อนอะไรเพียงแค่มีการใช้ Event หลักๆ 2 Event คือ
1. deviceorientation จะทำงานเมื่อมีการเปลี่ยนแกนโดยการหมุน สามารถเขียนทดสอบได้ดังนี้
window.addEventListener('deviceorientation', function(event) { var alpha = event.alpha; var beta = event.beta; var gamma = event.gamma; // Do something }, false);
2. devicemotion จะทำงานเมื่อมีการเคลื่อนไหว สามารถเขียนทดสอบได้ดังนี้
window.addEventListener('devicemotion', function(event) { var x = event.acceleration.x; var y = event.acceleration.y; var z = event.acceleration.z; var ralpha = event.rotationRate.alpha; var rbeta = event.rotationRate.beta; var rgamma = event.rotationRate.gamma; var interval = event.interval; });
Simple : http://uptoyou.life/other/test/mobile_motion.php (แสดงผลเฉพาะใน Smart phone หรือ Tab เท่านั่นนะครับ)
เราสามารถนำวิธีเหล่านี้ไปประยุกค์ใช้ทำสิ่งต่างๆได้มากมายโดยการเขียนเพียงแค่ Javascript ไม่จำเป็นต้องเขียน Application เช่นเวปเข็มทิศ
<DOCTYPE html> <html> <head> <style> #compass{ width:100%; transform-origin: 50% 50%; -webkit-transform-origin: 50% 50%; -moz-transform-origin: 50% 50%; } </style> <script> function init() { var compass = document.getElementById('compass'); if(window.DeviceOrientationEvent) { window.addEventListener('deviceorientation', function(event) { var alpha; //Check for iOS property if(event.webkitCompassHeading) { alpha = event.webkitCompassHeading; //Rotation is reversed for iOS compass.style.WebkitTransform = 'rotate(-' + alpha + 'deg)'; } //non iOS else { alpha = event.alpha; webkitAlpha = alpha; if(!window.chrome) { //Assume Android stock (this is crude, but good enough for our example) and apply offset webkitAlpha = alpha-270; } } compass.style.Transform = 'rotate(' + alpha + 'deg)'; compass.style.WebkitTransform = 'rotate('+ webkitAlpha + 'deg)'; //Rotation is reversed for FF compass.style.MozTransform = 'rotate(-' + alpha + 'deg)'; }, false); } } </script> </head> <body onload="init()"> <div id="compassContainer"> <img src="compass.jpg" id="compass"/> </div> </body> </html>
Simple : http://uptoyou.life/other/test/mobile_motion_pin.php (แสดงผลเฉพาะใน Smart phone หรือ Tab เท่านั่นนะครับ)
เท่านี้ก็สามารถเพิ่มลุกเล่นต่างๆให้กับงานและแนวคิดใหม่ๆของเราได้แล้วนะครับ ขอให้สนุกกับการใช้งานนะครับ ^^
อ้างอิง : https://mobiforge.com/design-development/html5-mobile-web-device-orientation-events