بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين
تحتوي أجهزة الهواتف الذكية على خاصية استشعار الحركة ثلاثي الابعاد وهاته الحركة عبارة عن قيم واحداثيات يمكن التعامل معها بكل سهولة في لغة اكشن
سكريبت 3 من خلال كلاس Accelerometer نوضح أكثر = الهاتف لما يتم تحريكه في جميع الاتجاهات يمكن لنا أن نعرف ونتعامل مع هاته القيم الخاصة بمحور وحركة الهاتف ولنقرب الصورة أكثر = هناك لعبة سباق سيارات لما يقوم المستخدم بتحريك الهاتف يمينا ويسارا تتبع السيارة اتجاه التدوير وهذا هو بيت القصيد يعني التحكم في تحريك العناصر بتحريرك الهاتف فقط دون اللمس ويكون هذا بواسطة دوال كلاس Accelerometer .
هناك بعض الاجهزة اصدارات قديمة لاتقبل هاته الخاصية ويمكن اختبار ذلك عن طريق هذا الامر Accelerometer.isSupported
المهم أن هذا الكلاس يمكنك أخي الكريم من التحكم الكامل في عناصر المشروع من خلال تحريك الهاتف فقط ويتم اعتماده غالبا في تطبيقات الالعاب المبنية على السرعة والحركة .
نمر الان الى شرح طريقة استغلال هذا الكلاس في انجاز تطبيق بسيط يعتمد فقط على تحريك الهاتف للتحكم بالعنصر .
اذن افتح مشروع جديد منصة أندرويد وتابع معي :
1/ يجب استدعاء كلاس Accelerometer وأحداثه كما يلي
كود:
import flash.sensors.Accelerometer; import flash.events.AccelerometerEvent;
كود:
var acc:Accelerometer = new Accelerometer();
كود:
acc.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate);
accelerationX
accelerationY
accelerationZ
ليكون الكود كما يلي
كود:
import flash.sensors.Accelerometer; import flash.events.AccelerometerEvent; var acc:Accelerometer = new Accelerometer(); acc.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate); function onAccUpdate(e:AccelerometerEvent):void{ trace("X axis = "+e.accelerationX); trace("Y axis = "+e.accelerationY); trace("Z axis = "+e.accelerationZ); }

وبواسطة هذا الكلاس يمكن انجاز مشاريع جميلة مبنية على الحركة والسرعة .
الدالة isSupported
للتأكد من دعم الهاتف لهاته الخاصية من الحركة حيث ان الاصدارات القديمة من الهواتف لاتدعم
ذلك وبالتالي يمكن استغلال الدالة في اظهار رسالة مثلا للمستخدم كما في الكود التالي :
كود:
import flash.sensors.Accelerometer; import flash.events.AccelerometerEvent; var acc:Accelerometer = new Accelerometer(); acc.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate); function onAccUpdate(e:AccelerometerEvent):void{ if (Accelerometer.isSupported) { trace("X axis = "+e.accelerationX); trace("Y axis = "+e.accelerationY); trace("Z axis = "+e.accelerationZ); } else { trace("عفوا جهازك لايدعم هاته التقنية" ) ; } }
كود:
import flash.sensors.Accelerometer; import flash.events.AccelerometerEvent; var my_acc:Accelerometer = new Accelerometer(); my_acc.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate); function onAccUpdate(e:AccelerometerEvent):void{ ball.x -= (e.accelerationX*30); ball.y += (e.accelerationY*30); }
باحداثياتها وتحجيمها مع مقاس المشروع الكود اتالي يوضح الأمر
كود:
import flash.sensors.Accelerometer ; import flash.events.AccelerometerEvent ; var my_acc :Accelerometer = new Accelerometer() ; my_acc.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate) ; function onAccUpdate(e :AccelerometerEvent) :void{ ball.x -= (e.accelerationX*10) ; ball.y += (e.accelerationY*10) ; if (ball.x < 0) { ball.x = 0 ; } else if (ball.x > stage.stageWidth) { ball.x = stage.stageWidth ; } if (ball.y < 0) { ball.y = 0 ; } else if (ball.y > stage.stageHeight) { ball.y = stage.stageHeight ; } }
تحسين وقت تحديث التسارع ولاحظ هنا مثلا الرقم 50 يمثل عدد أجزاء الثانية
كود:
import flash.sensors.Accelerometer; import flash.events.AccelerometerEvent; var my_acc:Accelerometer = new Accelerometer(); my_acc.setRequestedUpdateInterval(50); my_txt.text = "Acc support is "+Accelerometer.isSupported; my_acc.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate); function onAccUpdate(e:AccelerometerEvent):void{ my_dot.x -= (e.accelerationX*10); my_dot.y += (e.accelerationY*10); if (my_dot.x < 0) { my_dot.x = 0; } else if (my_dot.x > stage.stageWidth) { my_dot.x = stage.stageWidth; } if (my_dot.y < 0) { my_dot.y = 0; } else if (my_dot.y > stage.stageHeight) { my_dot.y = stage.stageHeight; } }

تحميل التطبيق
استودكم الله
تعليق