إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

الدرس الثالث عشر لانشاء تطبيقات الهاتف ببرنامج الفلاش : Accelerometer

تقليص
هذا الموضوع مغلق.
X
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • الدرس الثالث عشر لانشاء تطبيقات الهاتف ببرنامج الفلاش : Accelerometer



    بسم الله الرحمن الرحيم
    السلام عليكم ورحمة الله وبركاته
    الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين


    تحتوي أجهزة الهواتف الذكية على خاصية استشعار الحركة ثلاثي الابعاد وهاته الحركة عبارة عن قيم واحداثيات يمكن التعامل معها بكل سهولة في لغة اكشن
    سكريبت 3 من خلال كلاس Accelerometer نوضح أكثر = الهاتف لما يتم تحريكه في جميع الاتجاهات يمكن لنا أن نعرف ونتعامل مع هاته القيم الخاصة بمحور وحركة الهاتف ولنقرب الصورة أكثر = هناك لعبة سباق سيارات لما يقوم المستخدم بتحريك الهاتف يمينا ويسارا تتبع السيارة اتجاه التدوير وهذا هو بيت القصيد يعني التحكم في تحريك العناصر بتحريرك الهاتف فقط دون اللمس ويكون هذا بواسطة دوال كلاس Accelerometer .
    هناك بعض الاجهزة اصدارات قديمة لاتقبل هاته الخاصية ويمكن اختبار ذلك عن طريق هذا الامر Accelerometer.isSupported
    المهم أن هذا الكلاس يمكنك أخي الكريم من التحكم الكامل في عناصر المشروع من خلال تحريك الهاتف فقط ويتم اعتماده غالبا في تطبيقات الالعاب المبنية على السرعة والحركة .
    نمر الان الى شرح طريقة استغلال هذا الكلاس في انجاز تطبيق بسيط يعتمد فقط على تحريك الهاتف للتحكم بالعنصر .
    اذن افتح مشروع جديد منصة أندرويد وتابع معي :
    1/ يجب استدعاء كلاس Accelerometer وأحداثه كما يلي

    كود:
    import flash.sensors.Accelerometer; 
    import flash.events.AccelerometerEvent;
    2/ انشاء نسخة من الكائن او كلاس Accelerometer

    كود:
    var acc:Accelerometer = new Accelerometer();
    3/ لمعرفة قيم واحداثيات حركة الجهاز يجب ادراج حدث استماع لعملية التسارع ويكون الكود كما يلي

    كود:
    acc.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate);
    4/ انشاء الوظيفة التي ستمكننا من تخزين قيم التسارع وهي ثلاثة قيم
    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("عفوا جهازك لايدعم هاته التقنية" ) ; 
       }
    }
    طبعا يمكن استغلال هاته القيم في تحريك أي عنصر في المثال التالي سنضيف دائرة ونحولها الى موفي كليب باسم ball وانسخ الكود التالي

    كود:
    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 ; 
    }
    
    }
    الدالة setRequestedUpdateInterval()


    تحسين وقت تحديث التسارع ولاحظ هنا مثلا الرقم 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; 
    }
    
    }
    لشرح الدرس أكثر قمت بتطبيق بسيط يتضمن الاكواد المذكورة حمله من الرابط وقم بتنصيبه بهاتفك وعاين محتوى الدرس .




    تحميل التطبيق



    استودكم الله



  • #2
    السلام عليكم ورحمة الله وبركاته
    بارك الله فيـــك أستاذ عزيز على هذه السلسلة المنظمة لإنشاء تطبليقات الهاتف بالفلاش

    صحيح لا أملك المعلومة نهائيا فيما تعلق بالفلاش و أجد صعوبة في التأقلم أو التعلم

    لكن من الجيد وجود مثل هذه المحفزات للتفكير بجدية في التعلم شكـــرا

    تعليق


    • #3
      المشاركة الأصلية بواسطة ثامر أبو بلقيس مشاهدة المشاركة
      السلام عليكم ورحمة الله وبركاته
      بارك الله فيـــك أستاذ عزيز على هذه السلسلة المنظمة لإنشاء تطبليقات الهاتف بالفلاش

      صحيح لا أملك المعلومة نهائيا فيما تعلق بالفلاش و أجد صعوبة في التأقلم أو التعلم

      لكن من الجيد وجود مثل هذه المحفزات للتفكير بجدية في التعلم شكـــرا
      وعليكم السلام ورحمة الله وبركاته

      جزاكم الله خيرا أستاذ ثامر
      بالعكس أخي الفاضل المحترفين في مجال البرمجة أمثالكم لن يجدوا اي صعوبة
      في ممارسة اي برنامج اخر بما أن الاساسيات والقواعد واحدة
      تنياتنا لكم بالتوفيق يا طيب .

      تعليق


      • #4
        جزاك الله خيرا اخانا عزيز وبارك الله فيك

        تعليق


        • #5
          المشاركة الأصلية بواسطة أبو يوسف مشاهدة المشاركة
          جزاك الله خيرا اخانا عزيز وبارك الله فيك
          مرحبا استاذ أبو يوسف
          وفقكم الله

          تعليق


          • #6
            نفع الله بكم

            تعليق


            • #7
              بارك الله فيك أخى الفاضل عزيز

              دروس شيقة ماشاء الله

              يبدو اننى سيفوتني الكثير من هذه الدورة الرائعة

              جزاك الله خيرا ونفع بك الجميع

              تعليق


              • #8
                بسم الله الرحمن الرحيم

                بارك الله فيكم جميعا
                ان شاء الله نستفيد جميعا استاذ أبو همام

                تعليق


                • #9
                  بارك الله فيك ونفع بك المسلمن

                  تعليق


                  • #10
                    ممتاز ويوجد تامبلت جاهزة ببرنامج الفلاش يمكن التدرب عليها

                    تعليق


                    • #11

                      تعليق

                      مواضيع تهمك

                      تقليص

                      المنتدى: القسم العام نشرت بواسطة: ماريا عبد الله الوقت: 06-08-2025 الساعة 11:33 PM
                      المنتدى: القسم العام نشرت بواسطة: ماريا عبد الله الوقت: 06-04-2025 الساعة 05:29 PM
                      المنتدى: القسم العام نشرت بواسطة: ماريا عبد الله الوقت: 05-31-2025 الساعة 10:07 PM
                      المنتدى: القسم العام نشرت بواسطة: ماريا عبد الله الوقت: 05-30-2025 الساعة 11:48 PM
                      المنتدى: التصنيع والانتاج نشرت بواسطة: HaMooooDi الوقت: 05-30-2025 الساعة 09:36 AM
                      يعمل...
                      X