31
أﻛﺸﻦ إ ﺳﻜﺮﺑﺖ3.0 أﺳﺎﺳﻴﺎت اﻟﺤﺮﻛﺔ ﺍﻟﺮﺋﻴﺴﻴﺔ ﺍﻟﻔﺼﻮﻝ: ﺇﺳﻜﺮﺑﺖ ﺍﻷﻛﺸﻦ ﺃﺳﺎﺳﻴﺎﺕ ﺍﻟﻤﺜﻠﺜﺎﺕ ﺣﺴﺎﺏ ﺃﺳﺎﺳﻴﺎﺕ ﻭﺍﻷﻟﻮ ﺍﻟﺮﺳﻢ ﺳﺎﺳﻴﺎﺕ ﻭﺍﻟﻔﻼﺗﺮ) ــ ﺮﻳﺒﺎ( ﺍﻟﺮﺣﻴﻢ ﻋﺒﺪ ﺇﺳﻼﻡ

action script

Embed Size (px)

Citation preview

3.0 سكربتأكشن إ

الحركة أساسيات

:الفصول الرئيسية

أساسيات األكشن إسكربت • أساسيات حساب المثلثات • ) ريباــق (ن والفالتر اساسيات الرسم واأللوأ •

إسالم عبد الرحيم

II 3.0 أكشن إسكربت | مـقـــــدمة   

بسم اهللا الرحمن الرحيم

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

.أنشره لعله يجد طريقه إلى شخص يستفيد منه

وأكثر تفاعلية وقوة وهذا كالم شركة أدوبي وصراحة بدايتي مع الفالش بداءت مع األكشن سهل جداجعل الشق البرمجي 3.0األكشن إسكربت ربما تكون . والتدريب تحتاج فقط إلى التركيز والتأملهذه اللغة . في هذا الكتابولذلك لن أتكلم عنه 2.0وال أدري طبيعة األكشن إسكربت 3.0إسكربت

وضع نظام لشىء وهذا المخطط ىحرهي إال عملية تنظيم أو باأل مما تتخيل فالبرمجة ما ولكن األمر أسهل وأبسط بكثير حمل الكثير من الرهبةكلمة برمجة تبإإلضافة إلى أن هناك أفكار لغات البرمجةمتع ولعلها من ألذ وأ ,وظفها كما تشاءوأدوات تأساسيات ,قواعد مجرد خطوة خطوة وبالتدريج فهىبناءه أ يبد

.تمم من خاللهاكثيرة

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

. ومطبقة ومنفذه وصحيحه مئة بالمئة

إسالم عبد الرحيم 10-9-2007

 

3.0 سكربتأكشن إ

األكشن إسكربت أساسيات الفصل األول

:المحتويات الرئيسية المناقشة

إسكربت األكشن لوحة محرر • الشق التصميمي في برنامج الفالش • ية التوجهئنالكاالبرمجة • الخصائص • اآلليات •

األحداث • متفرقات •

إسالم عبد الرحيم

  3.0 أكشن إسكربت | أساسيات األكشن إسكربت 4 

:مقدمة ...نشاة لغة األكشن إسكربت

في شهرعندما اشترته شركة ماكروميديا Macromedia Flashل اسمه إلى وقد تحو FutureSplash Animator الـهى برنامج كانت بداية برنامج الفالش مجال تصميم مواقع الويب حيث أتاح لمصممي المواقع إضافة الحيوية والحركة والتفاعلية إليها ل هذا البرنامج بداية التطور المذهل في وقد مث. 1996عام ديسمبرإلى برنامج الفالش وكانت لغة الجافا شق برمجيإلى أن قررت شركة ماكروميديا إضافة , الوقت كفي ذل )GIFجيف (تراجع شعبية الصور المتحركة ىبدوره إل ىوالذي أدالوقت ولذلك قررت شركة ماكروميديا بدال من أن تنشىء لغة جديدة مستقلة كلذستخداما في إضافة التفاعلية إلى صفحات الويب في ااألكثر JavaScriptإسكربت

. ECMAScript لغة إيكيما إسكربتفلغة الجافا إسكربت مشتقة من , سس التي قامت عليها لغة الجافا إسكربتقررت أن توفر لغة مبنية على نفس األ

من برنامج الفالش ليصبح برنامج 5 المشتقة من لغة اإليكيما إسكربت مع اإلصدار الـ ActionScript بإدماج لغة الـ 2000ولذلك قامت شركة ماكروميديا عام .قريبة جدا ومشابهة للغة الجافا إسكربت األكشن إسكربت لغةفلذلك , بدأ رحلة التميزمتكامل وي

أطلقت العنان لتنفيذ أي فكرة أو حركة قد تخطر ActionScript بينما إضافة لغة الـ, التصميمي لبرنامج الفالش يتيح فقط عمل حركات بسيطة ومحدودةالشق ىويب والبطاقات اإلليكترونية وحتلعاب وما بينهما من أفكار من تصميم الالفتات اإلعالنية في مواقع الأكاملة ببرنامج الفالش إلى تصميم بذهنك من أول إنشاء مواقع

..!المكان كذاإلى سوف تأخذك هذه اللغة ففحيثما تريد أن تذهب . العروض التقديمية

الذي Adobe Flash CS3 وهواإلصدار األخير وطرحت 2005 ديسمبرفي شهر قامت بشراء برنامج الفالش من شركة ماكروميديا Adobe ن شركةأدير بالذكر والج .ActionScript 3.0 يدعم إستخدام لغة الـ

..!الشهر الدائم إلتنقال ملكية برنامج الفالش ديسمبريبدو أن شهر

..!معلومة إضافية وهى رابطة , وتر األوروبيةوهى رابطة مصنعي الكمبي European Computer Manufacturers Association اسم لغة اإليكيما إسكربت مشتق من -

ECMAScript الـ المبني عليهاو الرابطة هذه التي قدمتهاالمواصفات من ضمن ECMA-262و. فات عدة لغات برمجيةفي وضع مقاييس مواص متخصصة .ActionScriptوالـ JavaScriptالـومن ثم

عبارة عن عدة برامج تصميم تشمل برنامج ىوه 3أي حزمة اإلبداع Creative Suite 3 ختصار لـهو ا Adobe Flash CS3في اسم آخر إصدار CS3المقطع - . الفالش وبرنامج الفوتوشوب والدريم ويفر وغيرها الكثير

!...تعرف عن المكان الذي سوف تعمل فيه سويا مع هذه اللغةكأي وافد جديد البد وأن تو, بعد هذه الجولة التاريخية

:لوحة محرر األكشن إسكربت ...داخل برنامج الفالشدمج الم

:داخل برنامج الفالش Actions panel هناك طريقتين للوصول إلى لوحة محرر األكشن إسكربت .Actionsثم إختيار Windowعن طريق الذهاب إلى قائمة : األولى

.من لوحة المفاتيح F9عن طريق الضغط على مفتاح :الثانية

..!أنظر الصورة , لوحة محرر األكشن إسكربتستخدمت سوف تنتهي بفتح أي من الطريقتين ا

:أجزاء رئيسية 3ويمكن تقسيمها إلى

Actions toolbox:صندوق األكواد .1 , كاألرشيف ىفه. التي يمكن استخدامها ActionScript 3.0 المتاحة في الـ )الخصائصالدوال و( الذي يحوي جميع األكواد الكتالوجنها مثل أيمكن تشبيهها ب

كتاب عليه سهمويمكنك البحث فيها عن كود محدد فكما تالحظ وجود أيقونة على هيئة نفة ومقسمه تقسيم دقيق على حسب الفئة التي ينتمي إليها الكودمصوهذه تمثل الكود الذي يمكن استخدامه ويمكنك عن دائرة وعليها سهمعند الضغط عليه يفتح قائمة بها كتبا أخرى وهكذا إلى أن تصل إلى أيقونة على هيئة

.فالت في منطقة األكوادأو عن طريق السحب واإل إلى الكود الذي تكتبهن تضيفه طريق اختياره والضغط عليه ضغطتين أ

:Script navigator مستعرض األكواد .2 فقط هذه المنطقة التي تسمى مستعرض األكواد تقوم بعرض. مختلفة )لقطات( من الوارد أن تضيف أكواد إلى إطارات اء كتابتك للبرمجة الخاصة بفيلمأثن . فتمكنك من التنقل بسهولة بين هذه اإلطارت, طارات التي تحتوي على أكوداإل

5

 

فيمكنك

عدة زال

.يطهضافة أو الخاصية

لحالي أو ار ترقيم حدد فيها

3.0 شن إسكربت

لكائنات ببعضها ف

الثانية إختز, ساحة

تنشيط بعد ,لتعليقأو إض يمكنك كتابة

أو اخاصة بالدالة

الكود ال تصديرل إظها, )سطر طويلالتي تحد تفضيالت

أكش | شن إسكربت

:كاآلتي ى

الك ة توضح عالقة

معينة أو خاصية ة

لتوفير مس ]+[ة

لإلزالة الالثالثة , دال ي يأ( طر بسطر

ء الفراغات الخىمل

خيارات أخرى مثلفي حالة وجود س

نافذة التفك أيضا

أساسيات األكش

ىوه الجزء العلوي

نة تذودك بشجرة

ستعمال دالةابة و.

علمة بعالمةيرة م

سطر واحدرة عن وضعية سطحرر إلى األكواد وتم صندوق ..! كلية

قة باإلضافة إلى خد في سطر واحد ف

وهناك, د به الخطأ

 

يقونات في عدة أ .فته

فهذه األيقون, خر

طريقة كتاب حولت .لإلختبار البرنامج إلى أيقونة صغي

إلضافة تعليق عبارول المحرحونات وت

من صأو خاصية ك هذا المساعد ن

األيقونات السابقعدم جعل الكودي

السطر الذي يوجد

ذه المنطقة على إضافن كود معين و

.هاداخل أخر داخل أ

.مكتوبة .سيقها

ر بعض التلميحاتعند سطر معين

ختزاله تجميعه وإ

الثانية لإل, أسطرق فوق هذه اإليقور ثم تضيف دالة ع أنت في غنى عن

ائف التي تقدمهاأي( إللتفاف الكود

ر برقم ارك المحر

حتوي ايضا هذت. دخاللها البحث عن

استبدالهو كتبته كون لديك كائن د

. مسارهن سالمة األكود الم

كواد وتنسزاة األحاوم المحرر بإظهار

نقاط توقف إزالة بمعنى ت طر واحد

.زالهعدة يق عبارة عن

وم بإظهار صندوقالسطر تحددفقط

بالطبعو. ة األكواد

غلب الوظاوفيها أالسماح باإل, طباعته

حدث أخطاء فيخبر .ألكواد

تكتب فيها األكوادكواد يمكنك من خة في الكود الذي

يكفقد يحدث أن اليقونة تكون لك

والتي تتأكد من يحيث تقوم بمح, ي

ء كتابة الكود يقومثال إضافة أو , ح

سطختزال ولى لإلختزكل ما تم إ ضلإلضافة تعلي ىول

تقو ىوه األكوادف). ة كتابة األكود

دوق مساعد كتابة .لمساعدة

و, ) بالمحرر فقططبد الحالى وخيار

ة جدا ألنه ربما يحخدمة في كتابة األ

Actions pa: ت التي سوفألهم

مثل صندوق األكعن كلمة البحثة ف, مسار الكائنة

وهذه اال ئن معينالتدقيق النحوي ةالتنسيق الذاتية أثناء, التلميحاتة خيارات التصحيحة

األو, اإلختزالنات تراجع وعرضلثالثة ل

األو, التعليقاتات مساعد كتابة ونة شىء في منطقة ي

صند من خالل هاإظهار لوحة الونة

خاصة ( مة محليةكود أخر إلى الكود

خاصية مهمة ىهاأللون المستخدوط

aneطقة األكواد األ المنطقةهى ذه

تماما ]1[ -أيقونة [2] -أيقونة [3] -

اختيار كائنأيقونة [4] -أيقونة [5] -أيقونة [6] -أيقونة [7] -أيقونا [8] -

الثا, أسطرأيقونا [9] -أيقو [10] -

يتعديل أبما يناسبه

أيقو [11] -قائم [12] -

ك راديإستوه األسطرطنوع الخ

منط .3وهذ

  3.0 أكشن إسكربت | أساسيات األكشن إسكربت 6 

..!مهمة ملحوظة

من كود إطار أخرأتثبيت إحداها وتفتح بين اإلطارت التي تحتوي على أكواد ولكن ربما تود أنه يمكن من خالله التنقل مستعرض األكوادقد ذكرت في وظيفة - !..أفتح فيه ما تشاء , الحظ أن المحرر قام بعمل تبويب جديد, في الصورة [13]إلطار الذي تريد تثبيته وإضغط على الزر رقم اأفتح ,مستعرض األكواد ولعمل ذلك

فضل أخفائهما عن طريق الضغط على الزر الذي يوجد عند منتصف الحاجز فالغالب لن تستخدم أي منهما ولذلك ي مستعرض األكوادو صندوق األكوادكل من - ).األسودالزر مشار إليه بالسهم , أنظر الصورة( ..!الذي يفصلهما عن منطقة كتابة األكواد

نك سوف تتعرف أل. أما الباقي فيرجع لك أن أردت أن تعرفه اآلن. المكان الذي سوف تكتب فيه األكواد, منطقة األكوادأن تعرف فقط هو كل ما أريده منك من كل ما سبق

..! لذلك ال تقلق, وتتعود عليه مع الممارسة

:في برنامج الفالش الشق التصميمي ..األكشن إسكربت عالقته ب

! ؟..هل فكرت يوما كيف تم عمل أي فيلم كرتون مثل توم آند جيري البداية والنهاية حركات برسم أما الرسامون الرئسيون فيقومون . مساعدينوأخرين الرئيسينحيث يكون هناك الرسامين مجموعة عملالفكرة ببساطة أن هناك

مثل حالة التي ت , inbetweensالـ, البينيةأما باقية اللقطات .خرى القط وهو على األرضثم في رسمة أ ,سم القط أعلى الشجرةمثال ر ,Keyframes الـ ,الرئيسية

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

قطات لمتتدرجة ومتتابعة ثم يقوم البرنامج بعرض مجموعة ال, أنك تعطيه مجموعة لقطات مختلفة وهى .فكرة برنامج الفالش عندما خرج للوجود كانت تماما هوهذ رسم أو عالقة عناصريعرف ماذا ت البرنامج الفالش ولذلك كان .Frame, اللقطة ىيسية في البرنامج هئولذلك كانت وحدة البناء الر. بسرعة معينة تعطي تصور بالحركة

!؟..وال بتعريف كلمة رمز ولنبدأ أ .Symbols الـ, فكرة الرموزدمت إلى أن ق ,ببعضها لقطةال

فصورة . من الشهادات التي حصلت عليها )صورة(يطلب منك صاحب العمل نسخة ,مثال عندما تذهب للتقدم إلى وظيفة ما. شىء يمثل شىء أخر يرمز لغويا تعنكلمة خذ ثم Libraryضعه أوال بالمكتبة أي يقول لك البرنامج كل ما تريد أن تضيفه إلى الفيلم ..! الفكرة ىوهذه ه .األصليةترمز إلى الشهادة شهادة تمثل وال

للفيلم لي الحجم الككما أن , بها كميسمح لك بالتحو نة للقطةكوالمكل العناصر يستطيع البرنامج تعقبوبذلك .في فيلم وضعها أينما تريدمنه Instance,نسخةلكل رمز تخصيصضافة إلى أنه تم باإل, والبرنامج يقوم بعرضه في المكان الذي تحددهواحد عدة مرات ألن هناك فقط أصل لعنصرن أنت استخدمت هذا اإ سوف يقل .لمزيد من التحكم والمرونة منفصل عن الخط الزمني الرئيسي للفيلم به خاص مستقل Timelineخط زمني

:من الرموز ثة أنوعتقسيم عناصر الفيلم إلى ثاليعشق التنظيم فقد تم برنامج الفالش وبما أن

.وممكن أن تكون جزء من أى رمز أخرفي الفيلم أي حركة عمل لن تقوم بأى صورة ثابتة ىوه : Graphicثابتةصورة - .النقر عليها أو على مفتاح من لوحة المفاتيحعملية يستجيب لحركات الفأرة ووهو لإلضافة التفاعلية إلى الفيلم فهو : Buttonزر - الفيلمفي أي إطار داخل تحريكهل تعديل الخط زمني الخاص به أو برمجتهسوف يتم أو سبقام برمجمصورة أو شكل متحرك أي يوه :Movie Clipكة متحر -

.فيلم داخل فيلمبمثابة فهو ,الحالي ..! ملحوظة مهمة

.وسط الشرح ةكون مميزلكي ت موفي كليبمن اآلن فصاعدا سوف نطلق عليه Movie Clip أو الـ متحركةلا

تطبيق أكواد من خالل Movie Clipو Buttonالرموز من نوع بعناصر الفيلم وبرمجة كما ترى فقد أتاحت فكرة الرموز للمصممين القدرة على التحكم الكامل مجرد عرض تتابع معين من اللقطات إلى القدرة على التوقف عند إطار معين وعمل ما تشاء من ل استخدامه بذلك تخطى برنامج الفالش فكرةو, عليها األكشن إسكربت .بقدر اإلمكان حجم الملفبالتحكم و قتصاداإل ضافة إلىاإلاألهم من وراء فكرة الرموز بلميزة اهى وهذه .حركة وتفاعلية

بدال من في برنامج الفالش الرئيسية الجديدة وحدة البناء هوالرمز إدماج لغة األكشن إسكربت في برنامج الفالش جعلت ج من كل ما سبق أنتوتستطيع أن تستن

إال إذا أردت أن . القابل للبرمجة البد من أن يكون نوع العنصر موفي كليبمن خالل األكشن إسكربت داخل أي إطار معينة لشكل أو لصورة لعمل حركة ولذلك ,طاراتاإل .Buttonتنشىء زر فيكون من نوع الزر

Dynamic Text Fieldالحقول النصية المتغيرة باإلضافة إلى األزرارو الموفي كليبالرموز من نوع على و مباشرة اإلطارتيمكنك تطبيق أكواد أكشن إسكربت على إذا .ملفات الصوت و

  3.0 أكشن إسكربت | أساسيات األكشن إسكربت 7 

قلت سابقا كما . وتتحدث إليه من خالل لوحة األكشن إسكربت لكي تستطيع أن تناديه بهمميز سم ل األكشن إسكربت البد وأن تعطيه اي رمز من خالتتعامل مع ألكي ومن هذا الرمز الموجود في المكتبة ولذلك Instancesما هو إال نسخ Stageومن ثم كل ما هو موجود على المسرح الـ Libraryرمز تنشأه يضاف إلى المكتبة إن أي

..!ولعمل ذلك تابع المثال التالي Instance Name سم مميز خاص بهل األكشن إسكربت البد وأن تعطيه اكل رمز تريد أن تتعامل معه من خال :مثال

!؟..موفي كليب النوع حولها إلى رمز منعلى المسرح ثم قم برسم دائرة مثال Convert to Symbolومن تختار Modifyقائمةالذهاب إلى بإما - F8فتاح مالضغط على البأو - اكونقد وبهذا Movie Clip و حدد النوع circle_mc وليكنأن يظهر به في المكتبة هذا الرمز ل هدخل أي اسم تريدا صندوق البرنامج الحالتين سيفتح لك تافي كل

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

وضع ,غالب ستجدها أسفل المسرحالفي , Properties Inspectorأذهب إلى لوحة مستكشف الخصائص Instance Nameسم للنسخة الموجودة ولإلعطاء ا

.circle1_mcاالسم الذي تريد وليكن

..! أنظر الصورة

قائمة بكافة الخصائص والدوال تلميح عبارة عن مساعدتك أثناء كتابة الكود الخاص بهذا الرمز من خالل عرض محررالحظ أنه هناك عرف في التسمية حتى يستطيع الالخصائص والدوال وسيعرض لك كلسوف يدرك المحرر سريعا أنك تتعامل مع موفي كليب mc_سم السابق إضافة المقطع في االفمثال .واألحداث الخاصة بهذا الرمز

:وهناك ايضا مقاطع أخرى مثل الخاصة بالرمز من النوع موفي كليب واألحداث_btn :للرمز من نوع زر. _txt :غيرةتالم للحقول النصية.

_sound :لملفات الصوت.

:البرمجة الكائنية التوجهObject Oriented Programming...

..! لكي تستوعب مبدأ البرمجة الكائنية التوجه تابع معي المثال التالي أوال

فئاتلذلك قمت بتوظيف ثالث , )األلمانيةو الفرنسيةو اإلنجليزية( ثالث لغات دريسفتتح مركز لتعليم اللغات وقررت أن يقوم هذا المركز بتنفترض مثال أني قررت أن الالفئة األخيرة لتدريس لتدريس اللغة اإلنجليزية والفئة الثانية عبارة عن مجموعة للفرنسية و مدرسينالفئة األولى عبارة عن مجموعة , من المدرسين المتخصصين

مختلفة خصائصمع أن كل المدرسين الذين يدرسون اللغة اإلنجليزية تجمعهم صفة تدريس اللغة اإلنجليزية في فئة واحدة إال أنهم مختلفين فكل منهم له .أللمانيةاكنهم لو .األمر مع فئة مدرسين اللغة الفرنسية واأللمانية الخاص وطابعه الخاص وحتى في مواعيد العمل في هذا المركز وكذلكه الخاص وشكله سمكل منهم له ا

تابة على القراءة والك الطالب تمرينوكيفية تدريس الب القيام )كيفية( آلية مثال في هذا المركز يملكفكل مدرس لغة إنجليزية , اآلليات ىيجمعهم شىء أخر وهمن نطاق ألي سؤال يطرحه الطالب عليه اإلستجابةله القدرة على يضاوكل مدرس ا. ليات كل مدرس يتقنها جيدا ويعرف كيف يقوم بهافكلها وظائف وآ. واإلستماع . مناسبة شرح ةبطريق تخصصه

:تياآل لهالبد وأن معينة فئةفي مدرسكل لإذا مما سبق نستنتج أن .ستجيب لهاي أحداثو لياتآو خصائص

..! كائنية التوجهالوهذه ببساطة هي الفكرة التي قامت عليها البرمجة

  3.0 أكشن إسكربت | أساسيات األكشن إسكربت 8 

:من منظور لغة األكشن إسكربتالسابق المثال ولنطبق

.في هذا المركز )موظف(كائن هو المركز هذامدرس في أي في مثالنا السابق ,Objectهو كائن اللقطةكل عنصر في تعتبر لغة األكشن إسكربت أن -

مدرسي ة وفئةيالفرنسمدرسي فئة مدرسي اللغة اإلنجليزية وفئة (ث فئات الفي مثالنا السابق قسمنا المدرسين إلى ث ,Classالكائن ينتمي إلى فئة معينة هذا - .)األلمانية

يقدم األكشن .الكائناتهذه تستجيب لهاالتى Eventsحداث األو Methods لياتاآلو Properties صائصخال كل وتصف تحدد هي التي الفئةهذه - .ولكن تستطيع أنت ايضا كتابة فئات جديدة خاصة بك, إسكربت العديد من الفئات الجاهزة

:مثالمختلفة عن أي موفي كليب آخر فمثال خصائصومع ذلك فله MovieClipفئة الموفي كليب ىأي شكل ولنفترض مثال مربع من النوع موفي كليب هو كائن ينتمي إل

أبعاد مثل أي موفي كليب ولكن له م ولهلجود في الفيمختلف عن أي موفي كليب مو )موضع( yوإحداثي راسي xحداثي أفقي له إ ولكن ي موفي كليب إحداثياتأك لهمبرمجه لياتآمن خالل التحكم في خطه الزمنيأنك تستطيع كما . اإلطارتمن معين وله خط زمني خاص به يحوي على عدد خرأعن أي موفي كليب شكل مميز مختلف

.أو إلى ما هنالك من أحداث لحركة الفأرة او الضغط على مفتاح من لوحة المفاتيح يستجيبيمكنك أيضا أن تجعله و .MovieClipفئة الـ مسبقا في

:ويمكن تلخيص ما سبق كاآلتي .خرهدرجة الشفافية إلى آو اللون, داثياتميز الكائن كاألحالتي ت المتغيراتكل ىه Properties الخصائص - .ما يستطيع الكائن أن يقوم بهكل المحددة ل الدوالكل ىه Methods األليات - .ستجابة لههى كل ما يستطيع الكائن اإل Events األحداث -

  

..! مهمة ملحوظة همخط كأنه كائن ألننوع ي ألنه كائن وإسكربت ينظر إلى أي لون كأفاألكشن . يقة فكرة الكائنات تتعدى الموفي كليب واألزرار والحقول النصية المتغيرةقفالح -

ن يكون ة أي أنه ليس بالضرورأ. هذا اللون أو ذاك الخطالتي تحدد كيفية ظهور التى تحتوي على كافة الدوال إلى فئة األلوان وفئة الخطوط وافي األخير ينتمألحداث وهناك فئات فهناك فئات لكل حدث من ا, الك أو ال يخطربفاألكشن إسكربت مهوس بعمل تصنيف وفئات لكل شىء ممكن أن يخطر .يمكن رؤيتهشىء

 !.. إلخلوقت والتاريخ  

فهى بمثابة تجميع أو تغليف  .تنفيذ هدف أو فكرة ما خطوات وكيفيةالبرنامج على تدلمرتبطة ببعضها متسلسة ومجموعة أوامر ىه, Function, الدالة -فقط سمها ريق كتابة احتجت لها فقط تستدعيها عن طكلما إو سمااء كتابتك للدالة فإنك تعطي لها التكون ككتلة واحدة وأثن المرتبطة ببعضها لهذه األكواد

اسمها عن طريق كتابة تدعيهاالتي نس داخل اللغة جاهزةال دوالالكثير من الهناك الجدير بالذكر أن و. ثانيةمرة )الخطوات(األوامر هذه كتابة كل عادةإ بدال من .أو السياق وهناك ما سوف ننشئه على حسب الرغبة

 

مبرمجي األكشن إسكربتعداد فأثناء إ, الخصائصومثال على ذلك . جل تتبعها أو تغيرها فيما بعدألألي قيمة من عملية تسميةماهو إال , Variable, المتغير -

وأخر لدرجة الشفافية إلى , وأخر للون ,لقيم اإلحداثيات )اسمين(متغيرين مثالمعينة قيم ىتشير إللكي )سماءا(مثال قاموا بعمل عدة متغيرات فئة الموفي كليبلهذه اإلحداثيات ومن ثم اسمها قيم اإلشارة إلى واستعمال أو تغير )سماءاال(المتغيرات تستطيع بإستخدام هذه موفي كليب ىءوأنت مثال عندما تنش ..أخره

معين لكائن ممكن أن يكون اسم ,التحكم به فيما بعد سم لألي شىء تريدولذلك فالمتغير مجرد ا. هاأي قيمة من خالل بع وتغيرتتتمتغيرات ألنك تستطيع  . تغيرات أنواع كثيرةللمولذلك فمتعلقة بهذا الكائن )خاصية( ةقيموممكن أن يكون اسم ل

كافة القيم التي إلشارة إلى وتتبعأنه يمكنك أن تنشىء ما تشاء من المتغيرات ل هنا الجدير بالذكرولكن ..! ث عن المتغيرات بالتفصيل فيما بعد يحدسوف يأتي ال .شير إليها وقت التنفيذالتي ت بالقيم اءسمكشن إسكربت يقوم بإستبدال هذه االفإن األ داخل األكواد كواد و عند استعمالك لهذه المتغيراتاثناء كتابتك لأل تريد

. خصائصفئة أصبح اسمها آلية والمتغيرات أن وجدت داخل الفئة اصبح اسمها الفالدالة إن وجدت داخل . سماءى عشق األكشن إسكربت للتالعب باالفكما تر ..!سماء سوف تجدها ولذلك التقلق فاألمر مجرد تغير اسم وهناك مزيد من تحورات اال

..!لنبدأ باإلنتقال إلى عالم األكواد فبعد كل هذا الكالم النظري

:الخصائص…Properties

. square_mcسم ا النسخة ثم حوله إلى موفي كليب وأعطي وضعه في منتصف المسرح قم برسم مربع

:كتب الكود التاليوأ فتح لوحة محرر األكشن إسكربتوأ ,Timelineالـ ,في الخط الزمني 1حدد اإلطار رقم

square_mc.y = 0;

trace(square_mc.x);

  3.0 أكشن إسكربت | أساسيات األكشن إسكربت 9 

:ينالسابق لبرمجيينا السطريننبدأ في شرح لو

.لما حضر وضعنا نقطةو .square_mc وهو على الرمز الذي نريد التعامل معه بإسمه قمنا بالنداء األولالسطر في - ةموجهمرتبطة وسوف تكون نقول للبرنامج أن الكلمة التالية بوضعنا لهذه النقطة أي أننا .اإلحتواءنقطة هذه النقطة تسمى, وقفةإلى النقطة تحتاج قصة هذه

.دوالأو خصائص من الفئة التي ينتمي إليها هذا الرمز حويهت ماأحدى وهذه الكلمة . الذي قمنا بالنداء عليه هذا الرمزإلى

لون الوتالحظ أنها أصبحت ب .موفي كليبأحد خصائص الرمز من النوع ىفكما قلنا أن اإلحداثيات ه, ي لهذا الرمزتمثل اإلحداثي الرأس ىوه yثم قمنا بكتابة -من الكلمات الرئيسية ىفه األزرق ألنها من الكلمات التي يتعرف عليها األكشن إسكربت ألنها ببساطة تمثل شىء مبرمج مسبقا في فئة الموفي كليب ولذلك

.ستخدمها في تسمية أشياء جديدةمحجوزة لألكشن إسكربت وال يمكنك اوال

إذا لتتعلم من . البرمجي قد أنتهى ألمرللبرنامج أن ا ووجود هذه الفاصلة المنقوطة تعني ; الفاصلة المنقوطةووضعنا 0تساوي قيمة هذه الخاصية ثم جعلنها - .برمجي أمرأن ال تنسى وضع الفاصلة المنقوطة عند نهاية كل اآلن فصاعدا

.0يساوي square_mcهو أننا نقول للبرنامج أجعل اإلحداثي الرأسي الخاص بالرمز معنى المقصود من السطر البرمجي األولإذا ال

ختبار الكود أثناء البرمجة وهدفها األساسي هو عرض في إستخدم التي ت دوال األكشن إسكربتوهي من أهم ()traceستعملنا دالة التتبع في السطر الثاني ا -ماهي إال متغيرات وهذه المعامالت بين قوسينتكتب المعامالت أي دالة في البرمجة تقبل شىء يسمى . عينةا عند نقطة متغير أو خاصية ممعلومات عن قيمة م

التتبع لوحةما نريده أن يعرض في يمثلتقبل معامل ()traceالتتبع دالة. هذه الدالة عملتحدد كيفية لقيم تمرر أو تعطى للدالة من الخارج و) اسماء(

Output panel , رمز الخاص بالقيمة اإلحداثي األفقي عن تعبيرفي المثال السابق كان المعامل الذي وضعناه هوsquare_mc.

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

.وفيها قيمة اإلحداثي األفقي Output panelالتتبع لوحةظهور م ستالحظ لوعند إختبار الفي ..!اختفاء نصف المربع ولكنك تالحظ, أن الرمز قد أرتفع إلى أعلىو

:تياآليكون كلبشكل دقيق األولترجمة السطر البرمجي ولتفسير ذلك علينا .على المحور الرأسي 0لهذا الرمز تساوي Registration Pointأجعل نقطة الربط

ولتغيير ذلك ..! موفي كليب إذا أختفي نصف المربع للمربع إلىأثناء تحويلك ) الوضع اإلفتراضي( في المنتصف Registration Pointنقطة الربط تركت وبما أنك ..!الصورة أنظر . نقطة الربط في األعلى أثناء تحويلك للمربع إلى موفي كليبتجعل عليك أن

..!على الرمز والتحدث إليه مما سبق قد تعلمت كيفية النداء إذا

:ياتــــــاآللMethods...

بالتسلسل يتحرك Playhead التشغيل مؤشرهناك ما يسمى ب. طارتمن اإلمعين مستقل والذي يحتوي على عدد زمني قبل فإن الموفي كليب له خطكما ذكرت من فيتحرك مرة أخرى من أول ن يصل إلى النهاية يعيد الكرة وما أ ليعرض ما يحتويه كل إطارالخط الزمني بالترتيب من أول إطار إلى آخر إطار هذا على طول بسرعة ثابتةولكن لحسن الحظ فهناك آليات ضمن فئة الموفي كليب . نهايةال وفي كليب إلى ماليكرر تشغيل الحركة الخاصة بالم عدمؤشر التشغيل مي أن أ, طارخر إإطار إلى آ

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

  3.0 أكشن إسكربت | أساسيات األكشن إسكربت 10 

()stop:التوقف دالة .1

وهذه مينإلى الي ليسارامن إطار وهذا الموفي كليب له حركة عبارة عن اإلنتقال 50 في خطه الزمني circle_mc اسمه بلنفترض مثال أن لديك موفي كلي .قف هذه الحركة إذا فسوف تضغ الكود التالي في الخط الزمني الرئيسي للفيلمووتريد أن ت, الحركة تتكرر بإستمرار طبقا للوضع اإلفتراضي لمؤشر التشغيل

circle_mc.stop();

عن طريق ثم قمنا بإستدعاء الدالة ,للربط بين الدالة والموفي كليب نقطة اإلحتواءثم وضعنا ,سمهاالموفي كليب بتماما مثل القاعدة العامة قمنا بالنداء على !؟.. لماذا.. ولكنك تالحظ أننا وضعنا قوسين فارغين . كتابة اسمها

ما يسمى أن أي دالة تقبل فكما قلت سابقا. الدالة عند استدعاء يوهي جزء اساس أقواس الملحقاتفي لغات البرمجة عموما هذه األقواس الهاللية تسمى المقصود أن هناك دوال تحتاج إلى ضمن ملحقات الدالة و من أي أن المعامالت .أي معامالت تحتاج إلى هذه الدالة لنفإن هذه الوضعية ي ولكن ف بالمعامالت

..! الملحقات فارغة ساقوأوأخرى ال تحتاج فنترك قواس الملحقاتأبين معامالت نكتبها

.ثم قمنا بإنهاء األمر بالفاصلة المنقوطة كما هو المعتاد

!؟.. داخل األقواس بهذه الطريقة) المتغيرات(ويمكن أن تتسأل لماذا نكتب قيم هذه المعامالت . المعامل ولم ينساها ألني كما قلت ان عمل الدلة قد يتوقف على وجود هذا المعامل االجواب ببساطة هو لضمان أن المبرمج قام بكتابة قيمة لهذ

:()gotoAndPlay اإلنتقال والتشغيل دالة .2

دالة فسوف نستخدم ء من اإلطار األولبدال من البد ويبدا التشغيل من هناك 25اإلطار رقم ينتقل إلى مثال لو اردنا أن نجعل مؤشر التشغيل في المثال السابق :اإلنتقال والتشغيل

circle_mc.gotoAndPlay(25);

أليبدالذي يجب أن تنقل إليه الدالة مؤشر التشغيل رقم اإلطار يمثل السابق كما هو المعتاد ولكنك تالحظ أن الدالة تقبل معامل وهوالسياق البرمجى لألمر .التشغيل من عنده

رف في هناك ع سكربتففي لغة األكشن إ goto and playقاطع إال أننا لم نكتب مثال م 3ة السابقة رغم أنها عبارة إلى تالحظ اسم الدالريدك أن أيضا أولكني -يبدأ جديد كل مقطع ومن ثم حرف صغير بيبدأ المقطع األول و المقاطع تكون مالصقة لبعضهاوال توجد مسافات فإنه المتغيراتودوال للالنسبة بف, تسميةال

ستدعاء اسم دالة مثال ولم ترعي الحروف الكبيرة والصغيرة فسيكون هناك خطأ ولن يتعرف بإن قمت إو. تبعرف الماسم هذه الدالة نموذج لهذا العو. بحرف كبيرويمكنك أن تالحظ ذلك إذا لم .حيث أن لغة األكشن إسكربت حساسة لحالة الحرف gotoandplayخالف gotoAndPlayن أل. ةعلى الدال األكشن إسكربت

.يتغير لون اسم الدالة إلى اللون األزرق

فمثال فئة كل مقطع يبدأ بحرف كبير إال انه لبعضهاالمقاطع تكون مالصقة وال توجد مسافات يضاأفي لغة األكشن إسكربت ف الفئاتأما بالنسبة لعرف تسمية - ...و هكذا كبير والثاني ايضا يبدأ بحرف فكما تالحظ المقطع األول, MovieClipالموفي كليب اسمها

على العكس من , هاتغير يمكن ثابثة ال القيم التي تشير إليها المتغيرات إال أن مثلتماما خصائص) اسماء(ماهي إال وهذه الثوابت بالثوابت هناك ايضا ما يسمى - مثال كانت عبارة عن عدة مقاطع فإنها تفصل بشرطة تحتية وإن اسماء هذه الثوابت تكتب كلها بحروف كبيرةو, الخصائص التي رأيتها في األعلى كاإلحداثيات

ENTER_FRAME.

.بين الدوال والمتغيرات والفئات والثوابتميز المهم أن تعرف كيف ت..! التقلق فسوف يتضح لك األمر بعد قليل

:()gotoAndStop اإلنتقال والتوقف دالة .3

فسوف نستخدم ستمرار في التحركاإل هناك بدال من ولكن في هذه المرة يقف 25ايضا لو اردنا أن نجعل مؤشر التشغيل ينتقل إلى اإلطار رقم في المثال السابق :وقفدالة اإلنتقال والت

circle_mc.gotoAndStop(25); ..! جدا وأعتقد أنه إلى اآلن الكود السابق واضح

  3.0 أكشن إسكربت | أساسيات األكشن إسكربت 11 

:داثــاألحEvents...

لوحة المفاتيح أو النقر مفتاح من مثل الضغط على ,لألحداث من قبل المستخدمما إيستجيب الكائن .قلنا فيما سبق أن األحداث هي كل ما يستطيع الكائن اإلستجابة له .Timersالتي تعتمد على الخط الزمني أو عامل وقتي مثل المؤقتات و, أحداث داخل الفيلمأو , على زر الفأرة

:كيفية تعامل األكشن إسكربت مع األحداث تابع المثال التاليلك تضح يلكي

!؟..فلماذا فعلوا ذلك . ب رجال اإلطفاء ويسرعوا إلى سيارة اإلطفاء ويتوجهوا إلى مكان حدوث الحريقعندما يتم قرع الجرس يه, مثال في مركز اإلطفاء ...!وهذه هي الفكرة ببساطة. عن وقوع حادثا في مكانا ما اإلبالغقرع الجرس الذي يكون بمثابة إنتظارآلنهم ببساطة قد دربوا على

:إسكربتولنطبق هذه الفكرة من خالل األكشن

في المثال السابق الدالة هي اإلسراع . لتنفذ عند وقوع حدث ما قائمة إنتظاروهي ببساطة دالة يتم إدراجها في Event Listenerدالة إنتظار حدث هناك ما يسمي بإسكربت بوقوعه ليقوم بتفيذ كل يتم إبالغ األكشن عند وقوع هذا الحدث فإنهف .هو عند قرع الجرسفالحدث أما اء والتوجه إلى مكان حدوث الحريقإلى سيارة اإلطف

عند عينعمل شىء مخطوات ألنها ستوجه البرنامج ل Handlerدالة التوجيه بسمى ايضا المدرجة في قائمة إنتظار وقوع هذا الحدث لينفذها ولذلك ت اإلنتظار دوال .)الفآرةزر مثال عند النقر على ( ا الحدثذوقوع ه

:التي يتبعها األكشن إسكربت فهي كالتاليالفعلية أما الخطوات

.لتنفذ عند وقوع هذا الحدث ,وقوع حدث ما نتظارإقائمة في Event Listenerدالة إنتظار حدث إدراج . 1 الذي يعرف كل الشاهدهذا الكائن بمثابة .Event Classالحدث هذا فئة من جديد Event Objectكائن حدث فإنه يتم إنشاء , ند وقوع الحدث المنتظرـع .2

عدةحوي سوف ي ,MouseEvent Classينتمي إلى فئة أحداث الفأرة يالذ, كائن الحدثفإن )رةألحدث متعلق بالف(مثال بالنسبة ف .مالبسات هذا الحدث وكيف تم !...إلخ الحدثهذا مؤشر الفأرة وقت وقوع ) مكان( تحدد إحداثياتمثل التي متغيرات

خضر لألكشن إسكربت ليبدأ وهي بمثابة الضوء األ إلى كل دوال اإلنتظار Event Dispatchالحدث ) خبر وقوع(بث عملية ىسمت التىعملية اإلبالغ تتم بعد ذلك .3

.تنفيذ دوال اإلنتظار

ير هذا تمروعملية .ذهايتنف بعد ذلك ويتم )متغير( معاملئة يعلى ه إليها كائن الحدثمرر يالمدرجة على قائمة اإلنتظار نتظاراإلدوال كل بث الحدث فإن أثناء عملية .4 .إستخدام متغيرات كائن الحدث للوصول إلى معلومات حول هذا الحدثحتاج الدالة إلى ربما ت نهأل تمت الكائن للدالة

..! ملحوظة مهمةالنقر على رمز من الرموز مثل الموفي مثال عند ف. الحدث سوف يستقبلعبارة عن اي كائن ببساطة وهو Event Targetحدث المستقبل هناك ما يسمى ب -

خاصة به تستطيع ببساطة أن تدرج ما قائمة إنتظارلكل مستقبل حدث .مستقبل الحدث كليب يمثلالموفي في هذه الحالة عملية النقر تمثل الحدث و ,كليب .تشاء من دوال إنتظار في هذه القائمة

حداث فإني استخدمت أفعال كلها مبنيه للمجهول وكأنه هناك يد خفية هى التي في التعامل مع األكما تري في الخطوات الفعلية التي يتبعها األكشن إسكربت -ي عبارة عن مجرد دالة وهذه ستقبل الحدث وهو عبارة عن كائن بدالة إنتظار حدث وهفكما تري أننا قد ربطنا م. في الواقع اإلجابة نعم. تقوم بهذه العملية

التي تقوم بكل وهي .EventDispatcher Class فئة البث ال وهو فئة موجودة داخل األكشن إسكربت تسمىنها تمت من خالل وسيط أأية البد والعمل

األكشن إسكربت ولذلك فإن. وإلغاء اإلدراجنها توفر اآلليات المناسبة لعمل تلك الخطوات من اإلدراج حيث أ ربط وإنشاء عالقة تربط كائنين ببعضهما خطوات .لكي يتمكن من التفاعل مع دالة اإلنتظار EventDispatcher Classليات فئة كل أحدث ستقبل للالم الكائن يقوم بتوريث

:تييمكنك تخليص الفكرة السابقة كاآلو .عند حدوث الحدث يتم إبالغ األكشن إسكربت ليبدأ تنفيذ الدالة ومن ثممعين نقوم بإدارج الدالة التي نريد في قائمة إنتظار خاصة بكائن والا

: األحداث الخاصة بالفأرة.1

. square_mcسم ا النسخة ثم حوله إلى موفي كليب وأعطي وضعه في منتصف المسرح قم برسم مربع

:كتب الكود التاليفتح لوحة محرر األكشن إسكربت وأوأ ,Timelineالـ ,في الخط الزمني 1حدد اإلطار رقم

square_mc.addEventListener(MouseEvent.CLICK , onClick); function onClick (evt:MouseEvent):void { trace (evt.type); }

  3.0 أكشن إسكربت | أساسيات األكشن إسكربت 12 

:الكود السابقنبدأ في شرح لو

.اإلحتواء لما حضر وضعنا نقطةو .square_mc وهو سمهاب تقبل الحدثسسيقمنا بالنداء على الرمز الذي األول البرمجي السطرفي -

ولذلك .المسئولة عن إدارة الحدث EventDispatcher Classبفئة البث ةليات الموجودائن الذي يستقبل الحدث يرث كل اآلن الكوكما قلت سابقا أ -المسئولة عن وهذه الدالة هى. من فئة البث ليات هذا الرمز بعد عملية التوريثعد النقطة والتي أصبحت جزء من آب ()addEvenListenerاستدعينا دالة

 . هذا الرمزخاصة بلانتظار إدارج دالة إنتظار حدث في قائمة اإل

وقوع هذا دراجها في قائمة إنتظار سم الدالة التي نريد إو اخر هالمعامل األو, سيستقبله هذا الرمزالحدث الذي اسمهو األول المعامل , معاملينالدالة تقبل هذه - . ليتم تنفيذها الحدث على هذا الرمز

وبما أن اسم .سم بالطبعاولكل حدث حداثألمن ا أنواع كثيرة تضمهذه الفئة و MouseEventفأحداث الفأرة تنتمي إلى فئة , كل حدث ينتمي إلى فئة معينة -

حدث النقر ولذلك لكي نصل إلى اسم الحدث مثل .Constant ابتسكربت فيما يسمى بالثفقد وضعه مطوري لغة األكشن إ هتغيرال يمكن أن الحدث ثابتتبدال التعبير إساألكشن إسكربت ب التنفيذ يقوموعند . MouseEvent.CLICK التعبير ولذلك نستخدم CLICKهو الخاص بهذا الحدث على الفأرة فالثابت

MouseEvent.CLICK وهى اسم الحدث بقيمته click. 

وحددنا ثم وضعنا نقطة اإلحتواء MouseEvent وهي نتمي إليها الحدثاسم الفئة التي يبين أقواس الملحقات كتبنا أننا هو في الكود السابق كل ما قمنا به -لنكتب المعامل الثاني وضعنا فاصلةثم . على الزر األيسر للفأرةمرة واحدة أى عند النقر CLICKنريده وهو الحدث الذي اسم يمثل الذي )الخاصية( الثابتاسم

.سم الذي تريدولك الحرية في إختيار اال onClick أنا وهو اسم دالة اإلنتظار في هذه الحالة سميتها

قيمة وسيكون لونها أخضر آلنها بين عالمتي تنصيص وهذا يعني أنها مجرد مباشرة" click" أن تكتب MouseEvent.CLICKبالطبع يمكن بدال من كتابة -

الصيغة الثانية سوف يقبلها كما ألن . اسم الحدث خطأ ةباكت في حالةاألكشن إسكربت من مساعدتك أدق وأفضل حتى يتمكن ىولكن الصيغة األول ةنصي )اسم( .الخطأ في كتابة الصيغة األولى سوف ينبهك األكشن إسكربت لمكان الخطا ويحدده لكعند ولن تستطيع تتبع الخطأ أما حتى لو كانت خطأ ولن ينبهك هى

.square_mcحدث النقر على الرمز في قائمة إنتظار وقوع onClickإذا المعنى المقصود من السطر البرمجي األول هو أننا نقول للبرنامج قم بإدراج الدالة

ثم قمنا بتحديد اسمها وهو function عرف دالة جديدة كتبنا كلمةفي بداية األمر لكي ن. onClickسمى الدالة التي ت إنشاءبقمنا في السطر البرمجي الثاني -onClick.

نفإكما تعلمت في السابق و. لكي يتم التعامل معه اعطاءه اسممرر إلى الدالة ولذلك البد من إي الذي كائن حدثكما ذكرت فإنه بمجرد وقوع الحدث يتم عمل -لغات البرمجة عموما في , طتينثم وضعنا نق. ختيار ما تشاءولك الحرية في ا evtسميته أنا بين اقواس الملحقات إذا انشاءنا متغير . اسم تساوي متغير كلمة

حددنا لألكشن إسكربت إذا .MouseEvent فئةمن كائن حدثسيكون اسما ل evt ولذلك حددنا أن ,ما ننا سوف نحدد نوع شىءأهاتين النقطتين تعنى .اسما للكائن الذي يمرره لهذه الدالة

أي أن الدالة ستكون Void خالية دالة كونتفي هذه الحالة فإن الدالة س. هي لتحديد نوع هذه الدالةف, نمثلما يدور في ذهنك اآلتماما , ثم وضعنا نقطتين -لديك دالة تحسب تاريخ معين فقد يكون مثال. ة ترجعها الدالةيئمن أوامر وليست هناك قيمة نها معين تتابعتنفيذ ستقوم بفقط فهى . ةيئنتيجة نها خالية من

بنوع القيمة التي Voidوفي هذه الحالة تستبدل كلمة ن تستخدم هذا التاريخ فيما بعدوتستطيع ا بات معينةالحس نهائية ثم ترجع لك هذا التاريخ كقيمة .Numberوإذا كانت رقم فتكون Stringترجعها الدالة إذا كانت نص فتكون

كتابة أكواد هذه الدالة أاذا لبد. تستخدم لتغليف مجموعة أكواد هىو ,أقواس التغليف ىالبرمجة تسم اتفي لغ هذه األقواس عموما ,عكوفوضعنا قوس مثم - .فتحنا أقوس التغليف

الفئةلها معامل عبارة عن اسم للكائن من سيكون و onClick اسمها دالة إنشاءهو أننا نقول للبرنامج قم ب لثانيالمعنى المقصود من السطر البرمجي اإذا MouseEvent ليها وهذه الدالة ستكون دالة خاليةالذي سوف يمرر إ.

كائنسم فكما ترى فقد استعملنا ا .الحدث )نوع( مثلوهو التعبير الذي ي evt.typeوجعلنا المعامل هو ()traceاستعملنا دالة في السطر البرمجي الثالث - .يمثل نوع الحدثضمن كائن الحدث ثابتوهو typeوضعنا نقطة اإلحتواء وكتبنا ثم الحدث

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

.ثم قفلنا أقواس التغليف -

  3.0 أكشن إسكربت | أساسيات األكشن إسكربت 13 

.الخاص بهذا الحدث typeقيمة الثابت وهي Click وفيها كلمة Output panelالتتبع لوحةوعند إختبار الفيلم والنقر على المربع ستالحظ ظهور

:ىباقي األحداث فالثوابت الخاص بهم هبالنسبة لاما CLICKذكرنا منها MouseEventكما قلت فهناك أنواع كثير لألحداث داخل فئة DOUBLE_CLICK

MOUSE_DOWN MOUSE_MOVE

MOUSE_OUT MOUSE_OVER

MOUSE_UP MOUSE_WHEEL

ROLL_OUT ROLL_OVER

: الخاصة بلوحة المفاتيحاألحداث .2

. square_mcسم ا النسخة ثم حوله إلى موفي كليب وأعطي وضعه في منتصف المسرح برسم مربعقم

:كتب الكود التاليوأفتح لوحة محرر األكشن إسكربت وأ ,Timelineالـ ,في الخط الزمني 1حدد اإلطار رقم

stage.addEventListener(KeyboardEvent.KEY_DOWN , onClick); function onClick (evt:KeyboardEvent):void { square_mc.x = 0 ; }

:الكود السابقبالنسبة لشرح حدث الضغط ألنه لكي يستجيب المربع ل, stageجعلناه المسرح الـ square_mcالمربع جعلنا مستقبل الحدث بدل من الفكرة تماما مثل أحداث الفأرة إال أننا -

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

.KEY_DOWNالضغط على لوحة المفاتيح هو اسم حدث والثابت الذي يمثل KeyboardEventوبالنسبة للحدث فهو ضمن فئة -

.0 تقوم بجعل األحداثي األفقي للمربع يساوي onClick اننا جعلنا دالة عن الكود السابق هو المختلف فقط -

.المربع إلى اليسار إنتقالمن لوحة المفاتيح ستالحظ مثال المسطرةغط على ضوعند إختبار الفيلم وال

عن للدالة هو توفير معلومات مرر إلى دالة اإلنتظار الحدث الذي ين فائدة كائن قلت أفكما . قام المستخدم بالضغط عليه مفتاحالجدير بالذكر هنا أنه يمكنك معرفة أى لضغط عليه فمثال عند الضغط الذي قام المستخدم با تمثل المفتاح ىوه charCodeاألولى وهى , ولذلك فهناك خاصيتين .خصائصالحدث الذي تم من خالل عدة

عند الضغط على الفعلي على لوحة المفاتيح فمثال تعطي رقم المفتاح ىوه keyCode ىوالخاصية الثانية ه .a” "فإن قيمة هذه الخاصية تصبح aحرف ال على مفتاح .65فإن قيمة هذه الخاصية تصبح aمفتاح الحرف

:ENTER_FRAMEالحركة بإستخدام الحدث .3

التي تعتمد و, أحداث داخل الفيلم فهومن األحداث أما النوع الثالث . وكيفية عملها أحداث لوحة المفاتيحطة بالمستخدم مثل أحداث الفأرة وحداث المرتبتحدثنا عن األقد برنامج الفالش في عملالبد وأن تفهم كيفية فكرة هذه اللكي تستوعب و جعل البرنامج ينتظر حدوث شىء جديدقائمة على بمنتهى البساطة الفكرة .على الخط الزمني .عرض اإلطارات

ويقوم رأس التشغيل بتحرك لعرض وكل إطار يحتوي على عناصر معينة مكونة له مختلفة ومتتابعة )إطارات(قد ذكرت أن الشق التصميمي قائم على عمل عدة لقطات م لإذا مدة عرض الفي, )واحد كل ثانية إطار(إطارت وسرعة عرض تلك اإلطارات هي 5فيلم مكون من فلو فرضنا مثآل اننا لدينا . بسرعة معينةتلك اإلطارات محتويات

:فالحقيقة يقوم بشىء شبيه بالتالي عند تشغيل هذا الفيلم. الفالش بعمل ذلكبرنامج ولكن كيف يقوم .ثواني 5ستكون

.األول في الثانية األولى يعرض محتويات اإلطار .1

ن كان اإلطار الثاني مشابه وإ وعرض التغيير فيقوم بتحديث الشاشة في أحد عناصر اإلطار الثانيتغيير عناصر في اإلطار الثاني فإن وجد الالثانية الثانية يفحص وعند .2 . الثالثة لفحص محتويات اإلطار الثالث ثانيةتماما لإلطار األول فيبقى الحال كما هو عليه وال يعرض اإلطار الثاني بل ينتظر لل

في اإلطار الثالث وإال فإنه فقط في أحد عناصر اإلطار الثالث يقوم بتحديث الشاشة ويعرض العناصر التي تغيرتوعند الثانية الثالثة يبدأ الفحص فإن وجد تغيير .3 ..!. ة وهكذا حتى نهاية الفيلمينتظر للثانية الرابعويبقى على الوضع الحالي

  3.0 أكشن إسكربت | أساسيات األكشن إسكربت 14 

فإن عناصر المكونة لإلطارالهذه األكواد بعمل تغير في أحد تقوم نه من الممكن أن وأل, كواد أكشن إسكربت إلى أى إطارنه يمكنك إضافة أولكني قد ذكرت ايضا أوالجدير بالذكر أن عملية تنفيذ أكواد .)عرض النتيجة النهائية( عمل فحص وتحديث الشاشة بلقمن أول سطر إلى أخر سطر نفذ أوالت لكل إطار أكواد اإلكشن إسكربت

يذ أكواد اإلطار األول وهذه األكواد قامت للي ثانية لنتفيم 100قدره اوقت استغرقالفالش برنامج نففي المثال السابق مثال لنتفرض أاألكشن إسكربت تستغرق وقتا الفالش سوف ينتظر فإن برنامج لذلك. )إطار واحد كل ثانية(اإلطارت عرض ي المثال السابق قمنا بعمل سرعة اإلطار وكما قلت أننا ف هذا بعمل تغير في أحد عناصر

ثانية يميلل 50 تستغرقأنه قد اوقتا ولنفترض مثال ه تستغرقوحتي عملية العرض هذ. محتويات اإلطار األولعرض بدا بقبل أن ي )مرور أول ثانية( ثانية يميلل 900 ...! مع باقي اإلطارات وهكذا .نذ بدأ تشغيل الفيلمم ميللى ثانية 1050عرض اإلطار األول وإعداد إذا استغرقت عملية . لكي يكمل عرض اإلطار األول

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

ليقوم بعرض النتيجة لعرض اإلطار المجدول الموعد ينتظر حتى يحين إسكربت كلها دفعة واحدة ثمبل أن برنامج الفالش ينفذ أوامر األكشن , يتنقل إلى السطر التاليتم تنفيذ كل أكواد األكشن إسكربت الخاصة باإلطار ال السابق رغم أن برنامج الفالش أفي المثف. النهاية للمحتويات اإلطار والتغيير الذي أحدثته أكواد األكشن إسكربت

.)بعد مرور ثانية( ثانية ليعرض النتيجة في الموعد المحدد لإلنتقال إلى اإلطار التالي يميلل 900ثانية إال أنه انتظر يميلل 100في

شرة أتم األكشن اسكربتوعند التشغيل مبا. حرك موفي كليب عند النقر عليه إلى أقصى اليمينت دالة إنتظار حدثن هناك أومثال أخر لكي تتضح الصورة لنتفرض , ميللي ثانية 500ولنتفرض أن المستخدم قام بالنقر على الموفي كليب عند . صبح مهيىء لإلستقبال هذا الحدثميللي ثانية وأ 100طار األول في كواد اإلتنفيذ كل أ

. ميللي ثانية 1000عند موفي كليب إالرغم ذلك فإن برنامج الفالش لن يبدأ بتحريك الفيقوم البرنامج بتنفيذ أوامر دالة اإلنتظار و

..!أعتقد أصبح األمر واضح األن

:تي ستكون كاآلمنذ بداية تشغيل الفيلم ومن ثم فإن الوصف الدقيق لكيفية العرض والتنقل من إطار إلى أخر

.في اإلطار األول بتنفيذ كل أوامر األكشن إسكربتيقوم برنامج الفالش .1 .الخاصة بهذا الحدث يقوم بنتفيذ كل دوال اإلنتظار مسبقا وأثناء اإلنتظار إذا وقع حدث مبرمج ,لعرض اإلطار موعد المجدولالينتظر حتى يحين .2 :اشة إلى تحديث في الظروف التاليةوتحتاج الش. فحص إذا كانت الشاشة تحتاج إلى تحديثب حينما يحين موعد عرض اإلطار يقوم .3

.الشق التصميميتم من خالل قد عناصر اإلطار إذا كان هناك تغيير في .1 .عناصر اإلطارالوضع الحالي ل فيأو تعديل إحداث تغيير ما بأكواد األكشن إسكربت الخاصة باإلطار إذا قامت .2 .عناصر اإلطارالوضع الحالي ل فيأو تعديل دوال إنتظار حدث بإحداث تغيير ما إذا قامت .3

.هاقوم بتحديثبعناصر جديدة أو معدلة يبعد عملية الفحص السابقة إذا كانت هناك ضرورة لتحديث الشاشة .4 .إلطار الثاني وباقي اإلطاراتمع ا 4-1الخطوات من تكرار .5

نتقال إلى إطار جديدحدث اإل اسمه حدث )خبر وقوع(ببث للشاشة يقوم برنامج الفالش اعن اشياء تستدعي تحديث فحصالة كل عملي قبلوالجدير بالذكر أنه ENTER_FRAME العرضقد حان اآلن وقت أى انه يقول .تنتظر لكي يتم عرضهاو لى تحديثي تحتاج إالعناصر التويعمل هذا الحدث كمنبه لكل!..

 ولكنك في األكشن إسكربت سيكون أغلب تعاملك مع إطار واحد فقط سواء أكان كل , طريقة الفالش في التعامل مع أكثر من إطار اثناء العرض استعرضت إلى اآلن

.طولذلك البد أن تتعرف على طريقة الفالش في عرض فيلم عبارة عن إطار واحد فق. عند إطار معينالفيلم أوقفتالفيلم عبارة عن إطار واحد أو أنك

:ختالفات كما يليالخطوات السابقة ولكن مع بعض اإل لحد كبير ةالخطوات التي يتبعها الفالش في عرض إطار واحد مشابه

.في اإلطار األول بتنفيذ كل أوامر األكشن إسكربتيقوم برنامج الفالش .1 .الخاصة بهذا الحدث يقوم بنتفيذ كل دوال اإلنتظاروأثناء اإلنتظار إذا وقع حدث مبرمج مسبقا , لعرض اإلطار ينتظر حتى يحين الموعد المجدول .2 :وتحتاج الشاشة إلى تحديث في الظروف التالية. فحص إذا كانت الشاشة تحتاج إلى تحديثحينما يحين موعد عرض اإلطار يقوم ب .3

.ن خالل الشق التصميميإذا كان هناك تغيير في عناصر اإلطار تم م .1 .عناصر اإلطارالوضع الحالي ل إذا قامت أكواد األكشن إسكربت الخاصة باإلطار بإحداث تغيير ما أو تعديل في .2 .عناصر اإلطارالوضع الحالي ل تعديل فيأو دوال إنتظار حدث بإحداث تغيير ما إذا قامت .3

.هاقوم بتحديثالشاشة بعناصر جديدة أو معدلة يبعد عملية الفحص السابقة إذا كانت هناك ضرورة لتحديث .4 .الخاصة بهذا الحدث يقوم بنتفيذ كل دوال اإلنتظاروأثناء اإلنتظار إذا وقع حدث مبرمج مسبقا , لعرض اإلطار ينتظر حتى يحين الموعد المجدول .5 الشاشة إلى تحديث كما ذكرنا فيما سبقوتحتاج . فحص إذا كانت الشاشة تحتاج إلى تحديثحينما يحين موعد عرض اإلطار يقوم ب .6 .هاقوم بتحديثبعد عملية الفحص السابقة إذا كانت هناك ضرورة لتحديث الشاشة بعناصر جديدة أو معدلة ي .7 ... ينتظر حتى يحين الموعد المجدول .8

  3.0 أكشن إسكربت | أساسيات األكشن إسكربت 15 

وبذلك يمكننا إستغالل الحدث .رة اإلنتظارتفي ف تمكما ترى فإنه فقط ينتظر حدوث شىء جديد سواء أكان من خالل أكواد األكشن إسكربت أو من خالل حدث ENTER_FRAME نقوم نحن بإستجابة لحدثليقوم بعرضه بحيث قبل أن يقوم الفالش بعملية الفحص عن تغير في اإلطار , الذي تحدثنا عنه ENTER_FRAME .ليتم عرضه حدث التغيير الذي نريدهإسكربت ينفذ دالة انتظار ت ومن ثم نجعل األكشن

وعدد هذه المرات . كأنه حلقة تكرار تقوم بتحديث الشاشة بتغييرات معينة عدة مرات في الثانية ENTER_FRAME الحدث تعتبرولتوضيح الفكرة أكثر يمكنك أن .يساوي سرعة عرض اإلطارت التي إعدادنها للفيلم

:مثال

.ENTER_FRAME نتظار حدثإذا فخيارنا األكيد هو دالة إ .وةاليمين خطوة خطرك من اليسار إلى حفي كليب يتردنا أن نجعل مومثال لو أتخيل . square_mcسم ا النسخة ثم حوله إلى موفي كليب وأعطي على يسار المسرحوضعه قم برسم مربع

:كتب الكود التاليأفتح لوحة محرر األكشن إسكربت وأو ,Timelineالـ ,في الخط الزمني 1حدد اإلطار رقم

stage.addEventListener(Event.ENTER_FRAME ,onStart);

function onStart(evt:Event):void {

square_mc.x += 1;

} :الكود السابقبالنسبة لشرح

.stageالمسرح الـ هو جعلنا مستقبل الحدث الفكرة العامة لألحداث التي تكلمنا عنها والفكرة تماما مثل -ودالة .ENTER_FRAME هو اإلنتقال إلى إطار جديد والثابت الذي يمثل اسم حدثالتي تحوي على األحداث العامة Event فهو ضمن فئةوبالنسبة للحدث -

.onStartاإلنتظار أسمينها .Eventلكائن الحدث من فئة evt قمنا بإنشاء الدالة و خصننا أسم - .1ثم وضعنا الرقم  =+ستمعلنا رمز اإلضافة وهو اقدار واحد كل مرة مللموفي كليب بسي ن إسكربت يزيد قيمة اإلحداثي الرأنجعل األكشولكي -

24إلى 12طارت مثال من سرع عن طريق زيادة سرعة عرض اإلأيمكنك أن تجعله يتحرك .إلى اليمن خطوة بخطوة اليسار منوعند إختبار الفيلم ستالحظ تحرك المربع ..!إطار في الثانية وهكذا

هو لمسرحل اإلفتراضي ففي الغالب األعم يكون حجم. ستمر في التحرك وتخطى طول المحور األفقي للمسرحابعد فترة إختفاء الموفي كليب ألنه ستالحظ ايضا ولكنك550x 400. 550ولذلك علينا أن نجد طريقة لجعله يتوقف عن التحرك عندما يصل إلى !..

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

stage.addEventListener(Event.ENTER_FRAME ,onStart);

function onStart(evt:Event):void { if (square_mc.x < 500) { square_mc.x += 1; } else{ stage.removeEventListener(Event.ENTER_FRAME ,onStart); }

} :الكود السابقبالنسبة لشرح

.شرطجملة بالتحديد أننا قمنا بإضافة . دالة اإلنتظار أوامر تالحظ بالتأكيد أن اإلختالف موجود في -ثم في أقواس الملحقات وضعنا . وتالحظ تحولها إلى اللون األزرق if كلمة الصيغة العامة وهى قمنا بعد إنشاء دالة اإلنتظار بعمل جملة الشرط عن طريق كتابة -

بين أقواس الشرط هذا ثم وضعنا ما سوف يفعله األكشن إسكربت إذا ما تحقق. 500اإلحداثي األفقي للموفي كليب أقل من كونالشرط الذي نريده وهو .بواحد األفقي حداثيوهو زيادة اإل التغليف

.بين أقواس التغليف الشرط هذا حققيتم لسوف يفعله األكشن إسكربت إذا وتعني إذا لم يتحقق الشرط ووضعنا ما elseثم كتبنا كلمة -لإلزالة دالة اإلنتظار removeEventListenerننا استعملنا دالة تحريك الموفي كليب وهو عن طريق أ تالحظ كيف جلعنا األكشن إسكربت يتوقف عن -

onStart الحدثنتظار إمن قائمةENTER_FRAME بحيث ال يتم تنفيذها إذا لم يتحقق الشرط الذي وضعناه. وهي كتابة اسم مستقبل الحدث ثم الدالة addEventListenerدالة ثلتماما م removeEventListenerوطريقة كتابة دالة -

removeEventListener تحديدهما بين أقواس ملحقات الدالة والتي تمسوف تزيل دالة اإلنتظار من قائمة إنتظار الحدث التي. .ثم أغلقنا أقواس التغليف الخاصة بدالة اإلنتظار -

  3.0 أكشن إسكربت | أساسيات األكشن إسكربت 16 

فقم بالتوقف عن اإلستجابة لهذا إال و زيادة اإلحداثي األفقي قم إذا 500ن اإلحداثي األفقي للموفي كليب أقل من إذا المعنى المقصود هو إذا تحقق الشرط وهو كو

.الحدث

.إلى اليمن خطوة بخطوة إلى أن يصل إلى نهاية المسرح فيتوقف اليسار منوعند إختبار الفيلم ستالحظ تحرك المربع

.ولكن يتبقى بعد المتفرقات التي يجب أن تكون ملم بها 3.0األكشن إسكربت إلى اآلن فقد قطعت شوطا كبيرا في تعلم اساسيات ! ..أها

:متفرقات ..بالتأكيد منها البد

:كائن جديد من فئةإنشاء .1من خالل سيكون مع هذا المفهوم وتعاملك. الوضعتحدثت مرات عديدة عن هوس األكشن إسكربت في عمل فئات لكل شىء ولذلك أنت إيضا عليك التأقلم مع هذا

.إنشاء كائنات جديدة من الفئات التي يوفرها لك األكشن إسكربت

:مثالثم إسم الفئة newبإستعمال كلمة عن التاريخ والوقت الحالي نقوم كافة المعلومات ولإلنشاء كائن جديد يحتوي على Date سمىت والوقت بالتاريخهناك فئة خاصة

:الكود التالي كما هو الحال التي نكون منها كائن جديد new Date();

ن الدالة ال يبدأأ في السابق فقد تعلمت التاريخ والوقتهي اسم لفئة Dateلكن تأخذ نفس شكل الدالة وعلى أنها دالة آلنها ()Date إلى الـتنظر اآلن نت بالطبع أ

!؟.. اسمها بحرف كبير إذا لماذا وضعنا أقواس الملحقات :ما أقول تابع الكود التالي الذي يمثل الهيكل األساسي ألي فئة تستوعبالفئة من األساس ولكي بنية في الواقع هذا يرجع لطبيعة إنشاء

package my.package{ class MyClass { var myProperty:Number; function MyClass() { ……… } function myMethod() { ……… } } }

سم وإذا كان اال اكتب الحرف األول من كل مقطع صغيريف احزمة اسملل ونكيمكن أن يمل على عدة فئات وتكل حزمة تشلذلك فو packageفئة هي جزء من حزمة يأمل على عدة فئات من توهي تش flash.displayومثال على ذلك هناك حزمة في األكشن إسكربت اسمها ,مجرد عرف في التسمية,عبارة عن عدة مقاطع تفصل بنقطة

.my.package في المثال السابق هناك حزمة اسمها, MovieClip ضمنها فئة الـ سمهاخاصية اتحتوي على MyClassفئة اسمها في المثال السابق هناك . ياتوآل )متغيرات(خصائص تحتوي على مجموعة فئةكل كما قولنا في السابق أن و

myProperty كل الفئات وما تحويه هذه داخل ) اآلليات(دالة التكوين هي نوع خاص من الدوال . دالة التكوينهذه الدالة تسمى سم الفئة س احمل نفوهناك دالة تالمعامالت ذهولذلك البد من نعطي لهبمجرد إنشاء كائن جديد من هذه الفئة وقد تحتاج دالة التكوين إلى معامالت بدون استدعاء الدالة من أوامر يتم تنفيذه تلقائيا

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

.الفئة عليه ان يكتب قيمة للمرتب بين أقواس الملحقات .MyMethodاسمها ) دالة(وهناك آلية . حتي في عرف التسمية MyClassفي المثال السابق دالة التكوين كان اسمها تماما مثل الفئة

.فأقواس الملحقات تحتوي على قيم معامالت تحتاجها دالة التكوين  .ولكن قصدت أن تعرف لماذا نضع أقواس ملحقات هذه جزيئة متقدمة يمكنك تجاهلها اآلن :ونعود للكود الرئيسي الذي نتعامل معه وهو

new Date();

:ال تحتاج معامالت إذا يمكن كتابتها كاآلتي Dateوبما أن دالة التكوين لفئة الـ new Date;

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

.كلمة اسم تساوي متغير إذا علينا إنشاء متغيرفإن تعلمت في لغة األكشن إسكربت

  3.0 أكشن إسكربت | أساسيات األكشن إسكربت 17 

أما لإلنشاء .سمالالفئة التي ينتمي إليها الكائن صاحب هذا اقد رأيت في السابق كيف قمنا بإنشاء متغير داخل أقواس ملحقات الدالة عن طريق كتابة اسمه وتحديد ليصبح . ثم نعطيه لما نشاءسم ينتمي إليها الكائن صاحب هذا اال لفئة التيا سم الذي نريده ثم نحددهثم كتابة اال varالدالة نقوم بكتابة كلمة نطاق متغير خارج

:الكود كاالتي var curDate:Date = new Date();

ينتمي إليها الكائن الفئة التيلكي نحدد ين تنقطوضعنا سم الذي نريد ثم ثم حددنا اال ,أى متغير Variableوهي إختصار لكلمة , varكما تري فقد كتابنا كلمة .سم إلى الكائن الذي أنشأنهثم أعطينا هذا اال سمصاحب هذا اال

سم لكائن جديد من سنعطي هذا االو Date والوقتسيكون اسم لكائن من فئة التاريخ curDateسمن االإذا المعنى المقصود أننا نقول لآلكشن إسكربت أ .هذه الفئة يمثل الوقت والتاريخ الحالي

:فوفاتـــالمص.2

:ولتوضيح األمر تخيل المثال التالي. وليس قيمة واحدة عملية تسمية لمجموعة قيممع إختالف أن المصفوفات . هي نوع خاص من المتغيرات المصفوفةالمتواجدين في هذا الفصل بالترتيب ولكل عدد من الطالب اسماء )ترتب, تصف( المدرسة كانت هناك عدة فصول ولكل فصل قائمة تضم سة فيلو تتذكر أيام الدرا

وكل 3/1مثال قائمة فصل سم المصفوفة يمثل االفصل فكل القائمة هي مصفوفة اسم. هذه هي فكرة المصفوفةو ,ل السنةاطالب رقمه الخاص في هذه القائمة طو .اسم طالب في القائمة يمثل عنصر من عناصر المصفوفة

..!من منظور األكشن إسكربت ولنطبق هذا المثالالمصفوفة عبارة عن عدة . ومصفوفات أخريأن تحتوي على أعداد وقيم نصية ومتغيرات فممكن ,ي قيمأ, فالمصفوفة كما قلت ما هي إال عملية تسمية لمجموعة قيم

المسند إلى فإني أشير إلى رقم المكان ما داخل المصفوفة قيمة أشير إلىلكي و أني أعطي لكل قيمة رقم محدد داخل المصفوفة بمعنى. محدد أمكان ولكل مكان رقموكالعادة األكشن إسكربت فأي مصفوفة تنتمي إلى فئة . وهكذا 2ثم 1ثم الذي يليه 0 المكان األول رقمه والترتيب يبدأ من الصفر بمعنى أن. القيمة التي أريدها

.Array Classالمصفوفات :يام األسبوعلذي ننشىء فيه مصفوفة تضم اسماء ألكي يتضح لك األمر تابع معي المثال التالي ا

var arWeek:Array = new Array (); arWeek[0] = "األحد"; arWeek[1] = "اإلثنين"; arWeek[2] = "الثالثاء"; arWeek[3] = "األربعاء"; arWeek[4] = "الخميس"; arWeek[5] = "الجمعة"; arWeek[6] = "السبت";

:الكود السابقبالنسبة لشرح الكائن صاحب نتمي إليها وحددنا الفئة التي ي arWeekبعمل متغير جديد واسميناه كما رأيت قمنا بما أن المصفوفات هي نوع خاص من المتغيرات ولذلك ف -

.كائن جديد من فئة المصفوفاتسم لواعطينا هذا اال Arrayسم وهيهذا اال [..]وذلك بإستعمال األقواس المستقيمة . لكل قيمة مكانعن طريق تحديد رقم , وهي عبارة عن قيم نصية, بالعناصربملىء المصفوفة فيه باقي الكود قمنا -

ن المصفوفة هي اسم لمجموعة قيم ولكل قيم رقم معين داخل هذه لت أفكما ق. أقواس التفصيلفي لغات البرمجة ذه األقواس المستقيمة تسمى عامةه .ثم نسنده لقيمة معينة arWeek[0]إذا بإستعمال أقواس التفصيل نقوم بتحديد رقم المكان مثل .المصفوفة

.الجمعةويقوم األكشن إسكربت بإستبدال هذا التعبير بالقيمة الحقيقة وهي arWeek[5]تب عندما نحتاج إلى اإلشارة مثال ليوم الجمعة في الكود فإننا نك -

:التعلــيقات.3وهناك طريقتين لكتابة . لكود لألحد ويمكنك كتابته باللغة العربية إن أردتاربما تحتاج إلى إضافة تعليقات إلى الكود الذي تكتبه لمزيد من التفصيل لك أو أثناء شرحك

:التعليقات :مثال //شرتطين مائلتين في حالة إذا كان التعليق عبارة عن سطر واحد بإضافة :األولى

هذا مثال على تعليق عبارة عن سطر واحد// :التعليق مثال في نهاية/* في بداية التعليق و */ في حالة إذا كان التعليق عبارة عن عدة اسطر بإضافة : الثانية

/* آبير تعليقهذا مثال على اسطربارة عن عدة ع */

.والجدير بالذكر أن التعليق يأخذ اللون الرمادي داخل الكود

؛ نتهـــــــــــــــــــــــــــىا

  3.0 أكشن إسكربت | أساسيات حساب المثلثات 18 

3.0 سكربتأكشن إ

أساسيات حساب المثلثات الثانيالفصل

:مناقشةالمحتويات الرئيسية ال

التعريف • يا ومعاير القياساالزو • الدوال الرئيسية • التدوير • حركة السلسة أو الناعمةال • الحركة الدائرية والبيضاوية • نظرية فيثاغورس •

إسالم عبد الرحيم

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

  3.0 أكشن إسكربت | أساسيات حساب المثلثات 19 

:تعريف حساب المثلثات...اياوزعالقة أضالع ب

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

.المقدار الذي ذات به الزاوية األولىمع بمقدار متناسب أيضا

سهل ن العالقات بين زواياه و أضالعه أبسط واولحسن الحظ فإ يةواالزسوف تكون مع المثلث القائم األكشن إسكربتوأغلب التعامالت في برنامج الفالش من خالل .بكثير من األنواع األخرى

:في برنامج الفالش حساب المثلثات أهمية

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

:الزاوية

ولذلك البد من إلقاء نظرة , !.. مر منطقي بالطبعأ,ذاد قياس الزاوية كلما حيز بينهماال هذا ذين الخطين وكلما كبرما بين ه الحيزتعريفها ببساطة هو تقاطع خطين أو .سريعة على طرق قياس الزاوية

:يانادالر نظامو الدرجات نظام

:يااالزو قياس لحساب نظامين هناك

.عالجمي يعرفه والذي المعتاد النظام هوو )جزءأو ( درجة 360 الدائرة قسمت فيه و )أو المعروف بالتقدير الستيني( الدرجات نظام : ولاأل

نأل, )ـ طت باعند أهل الرياضيالمعروفه ( π باي 2 إي) جزءا 6.2832ا دتحدي(أجزاء 6 اتقريب إلى الدائرة سمتق وفيه )الدائريأو المعروف بالتقدير ( دياناالر نظام : الثاني .الدرجات نظام في درجة 57.2958 يساوي )الجزء الوحد( ديانار 1 فإن ولذلك3.14. تساوي نعرف كما الباي

. )باي 1( ديانار3.1 4 تساوي )دائرة نصف( درجة018 أنب القول يمكن وللتسهيل

.حسابات يقوم بها برنامج الفالش لإليجاد قياس زاوية سوف تكون بنظام الراديانش أي أن أي الفال برنامج في المستعمل هو الريديان ونظام

: مثال

πباي 1 ...... تساوي ...... درجة 180 أن بما

؟؟؟ ...... تساوي ...... درجة 95 الــ ـإنف

:فإن المجهولة دياناالر قيمة لمعرفة

180x س =π 1 x 95

x 1 π ÷ 180 π 95= س

.راديانال نظام إلى الدرجات نظام من 95 الـ حولنا قد سبق مافيو

:في برنامج الفالش كاآلتي األكشن إسكربت ويكون الشكل العام للكود في

*/ يمثل اسم المتغير الذي سيحوي قيمة الراديان radiansحيث الـ

بالدرجاتيمثل اسم المتغير الذي يحمل القيمة degrees والـ /*

radians = degrees * Math.PI / 180

  3.0 أكشن إسكربت | أساسيات حساب المثلثات 20 

:وللتحويل من نظام الراديان إلى نظام الدرجات

*/يمثل اسم المتغير الذي سيحوي القيمة بالدرجات degreesحيث الـ

الراديانبالذي يحمل قيمة اسم المتغير يمثل radians ـوال/*

degrees = radians * 180 / Math.PI

.π لكي نحصل على قيمة باي Math.PIفي األمثلة السابقة استعملنا دالة

نريد نحن يا بنظام الراديان بينمااحيث أن برنامج الفالش يحسب الزو األكشن إسكربت من خالل تدوير أي شكل او موفي كليبتبرز الحاجة إلى التحويل عندما نريد و

.التدوير أن يكون بنظام الدرجاتديان إلى االرنظام تحويل منالضطر إلى ن ريد عمله بزاوية معينة فسوفون األكشن إسكربتمن خالل كليب موفيلشكل او لعمل مثال ظل عندما نريد األخرىوالحالة

.و يمكن التعامل معه بسهولة ذلك فترك نظام الراديان كما هو بدون تحويل ليس فيه أي مشكلة افيما عد .الدرجاتنظام

!؟..بنظامين الفالش ربما تتسأل لماذا يتعامل برنامجولكن وكغيره األكشن إسكربتتمثل في برمجي المالشق ال يملك وبالطبع .هو يتعامل مع نظام الدرجات المعتادالعادي و الشق التصميمي ..الجواب هو أن الفالش له شقينو

.األخرى يستعمل نظام الراديان ةمن لغات البرمج

!.. إضافيةمعلومة .ثانية 60قسمة إلى دقيقة وكل دقيقة م 60قسمة لـ درجة وكل درجة م 360قسمه فيه إلى سم ألن الدائرة مالستيني بهذا االتقدير سمي ال

.والتى تعنى نصف قطر الدائرة Radiusمشتقة من كلمة Radian وكما أن كلمة .سم ألنه يعتمد باألساس على نصف قطر الدائرةالدائري سمي بهذا اال التقديرأما

حداثي الرأسي إلأي أن األحداثي األفقي يزيد من اليسار إلى اليمين وا. يبدأ من أعلى اليسار في برنامج الفالش yواإلحداثي الرأسي xحداثي األفقي اإلوالجدير بالذكر أن . يزيد من أعلى إلى أسفل

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

:الدوال الرئيسية هيحوي عدة دوال لحساب هذه العالقات وهذ األكشن إسكربت و. ات قائم باألساس على وجود عالقة بين قياسات األضالع والزواياكما ذكرت من قبل فإن حساب المثلث

:الدوال والتي سوف ننقاشها هى

جيب الزاوية.. .......... Sineدالة الـ • تمام الزاوية جيب ........ Cosine دالة الـ • ظل الزاوية ........Tangentدالة الـ • قوس جيب الزاوية. ...... Arcsineدالة الـ • قوس تمام جيب الزاوية. .. Arccosineدالة الـ • قوس ظل الزاوية.. Arctangentدالة الـ •

21

 لنبدأ و. ل

سماء ا امهم في

يب فهى

tra

t . ولعلك .جات

عكس ى

3.0 ن إسكربت

بكثير مما تتخيل

..!

ضالع لهااألفإن والمه. الوترسمه

.الوتر

ترجمة لكلمة جي

ce (Math.sin (30

()trace ة التتبعرجدالبنظام ليس

. 1وليس -1من أسفل إلى أعلى

أكشن | ب المثلثات

بسط أأسهل و ر

ظر الشكل التالي

قائم ف المثلث السخر اواأل لمجاور

ا بل يساوي نصف

. وترSine إال ىما ه

0 * Math.PI / 18

تبع من خالل دالةبنظام الراديان ول

.ى إلى أسفلوالضلع المقابل

مع المقابل يتجه

أساسيات حساب

فاألمركما قلت لك

أنظ. لقائم الزاوية

أننا نتعامل مع الضلع ال يسمى

:تي

هى أن المقابوما

مقابل إلى طول الو م الزاوية وكلمة

80));

التتلوحة ناتج في ليات على الزوايا ب

من أعلىيتجه سي درجة 30وليست وأيضا الضلع. ساعة

.ما

 

فكمولكن التقلق

كون مع المثلث ا

وبما . درجة 30 اأحدهم 30وية .ر

موها كاآلتوقس 3

مهما كان طولهم

ضلع الملطول ا ةاوية مفتوحة أمام

لنا الن ظهرثم يجة يقوم بالعملكربت

على المحور الرأسودرجة -30ة له

عكس عقارب الس

مهما كان طولهم

.مادة الرياضيات

سوف تك إسكربت

0ى زاوية قدرها لعين حول الزاون الضلع المجاور

360 الـ وية من

ةثابت الوترو قابل . 24ن طول الوتر

نسبة ي أطلب منكوا جيب أو كأنه حا

درج 30زاوية يب األكشن إسك ت أن

ع ايضا أن التدريج ش فالزاوية بالنسبة

تتجه درجة 30ة

ةثابت الوترو جاور

ت إليك ذكريات م .ى بساطة األمر

األكشن ن خالل

يحتوي علىوية ووهناك ضل مقابل

تخلط بينه وبين

عند كل زاضالع

المقة بين الضلع فسوف يكون 12

: التالي

ذلك أني فمعنىة قابل والوتر يمثلو

:لتالي

خرج لنا جيرنامج ين ألني كما ذكرت

وذكرت ب الساعةخل برنامج الفالش

إذا الزاوية. ى الوتر

مجالة بين الضلع

عادتالتي أ لسابقةنهم وسترى مدى

حساب المثلثات من

مثلث قائم الزاوالضلع المسمه

لكي ال تالوتر مه

عالقات بين األض

درجة فإن العالقة 3ل المقابل يساوي

ووضعوا القانون .الوتر

درجة 45وية مثال رى أن الضلع المق

.يف أو جيبالفي المثال كربت

M لبرلكي نجعل ا إلى نظام الراديان

.جربته

تجاه عقاربان في لحالية موجود داخلضلع المجاور إلى

.الش

درجة فإن العالقة 3

سماء السط من االسيط لكل دالة من

لب تعامالتنا مع ح

سابق عبارة عن ا 30بل للزاوية

سما دائما األكبر

ضيات أن هناك ع

30ن لديك زاوية ذا كان طولإمثال

جيب الزاويةسم طول ا ÷ المقابل

سب لي جيب الزاوكما ترعالقة فالة

والتي تعني تجويف األكشن إسكرخالل

Math.sin لةانا دن نظام الدرجات

عن تج 0.5برنامج

تجاه الدوران يكون السابق بهيئته الة هى تكون من ا

لفاللبرنامج امعتاد

C: 30ن لديك زاوية

بت ببعض اإلحباطبسيطة وتعريف بس

غلفإن أت من قبل

فإن الشكل السفهناك ضلع مقاب

الضلع اتعرف أن

شاف علماء الرياض :Sineللدالة ة

كانمثال لو ماء أنه 30ه عند الزاوية

على هذه العالقة اطول الضلع = وية

ه لو قولت لك أحسطبيعةيعكس طبعا

Sinusن كلمة هذه العالقة من خال

أستعملن ل السابقمن 30ننا حولنا الـ

سوف يخرج لك الب

!.. مهمةذكرت أن نظام أتنى لو أن المثلث

تجاه الزاويةعرفة االم yريج الرأسي

Cosineللدالة ة كانمثال لو ماء أنه

لعلك اصببمقدمة بس

كما ذكرت

كما ترى ف. زةممي

األمر أن ت

وقد أكتشبالنسبة.1

وجد العلمبمعنى أنه

ع واواطلقجيب الزاو

نهبمعنى أ

سم طالوامشتقة منولنختبر ه

في المثالالحظت أنوبالطبع س

ملحوظة مكنت قد ذ

معنب -ولمع -

التدر بالنسبة.2

وجد العلم

22

 

ال ترجمة

trace (M

tr.

وبنفس

إلحداثي

وكما . ت

تعنى ها

trace (M

3.0 ن إسكربت

Co-Si إال ىما ه

Math.cos (30 *

()ace لة التتبع

األمر بسيط جدا

واإل xداثي األفقي

ه مع اإلحداثيات

سم حيث أنهة لال

Math.tan (30 * M

.()trace بع

أكشن | ب المثلثات

. ول الوتر neكمله وكلمة

Math.PI / 180))

لتتبع من خالل دا

ا. درجة 60ساوي

حدمحاذيان لإل دة

نه يتجهموجب أل

. ضلع المجاورترجمةشبه إال ى

Math.PI / 180))

من خالل دالة التتب

أساسيات حساب

إلى طو جاورلع المكتمه أو ينه يأ وك

);

ال لوحة الناتج في

لمقابلة والتي تس .ح مجاور

للزاوية المراد ابل!

هما مسفل فكال

.لهما

ضإلى طول ال قابلTangent ىما ه

;

التتبع م لوحةفي

 

ضللطول ا نسبة كجه للجيب السابق

لنا ظهرثم ي 30

ها على الزاوية الل والمقابل سيصبحجاور والضلع المقا!.. ر الشكل التالي

سأ من أعلى إلى

مهما كان طول ةت

قضلع الملطول ا ما كلمةأ .لزاوية

لنا الناتج ف ظهرم ي

ك أني أطلب منكخر مواجوا جيب أ

.وية

جيب تمام الزاوية

ا لو أردنا تطبيقهور سيصبح مقابليصبح الضلع المج

أنظر .خذ أطوالهم

لمقابل يتجه وا .األخرى

ثابت المجاورو قابل

نسبة أطلب منكلل ضلع المقابللل

.ضالعها

ثم 30الزاوية ظل

:قانون التالي

فمعنى ذلكدرجة 4مجاور والوتر يمثلو

Sin أي جيب الزاو

:لتالي

خرج لنا جبرنامج ي

فماذدرجة 30ة المجاوبة للزاوية ف

ضع المثلث حتى يحتى نستطيع أخذ

مين إلى اليسار ا ىموجبة ه ىه

المقة بين الضلع :لتالي

فمعنى ذلك أني كأنه ظل لمجاور

وية و يمثل أحد أض :لتالي

ظخرج لنا برنامج ي

ووضعوا الق لزاوية .طول الوتر

45الزاوية مثال ملضلع المجترى أن ا

neالمكمل و يعن

في المثال الكربت

Mلبلكي نجعل ا

على الزاويةزاوية بالنسبل سيتبدال

ان يتم تعديل وض ي المثلث السابق

ور يتجه من اليمفه عقارب الساعة

درجة فإن العالقة 3ووضعوا القانون ا

.ضلع المجاورل

درجة 45ية مثال ترى أن الضلع الملعالقة يمس الزاو

في المثال الكربت

Mلبلكي نجعل ا

الزتمام جيب سم ط ÷ جاورلضلع الم

تمام سب لي جيبالعالقة فكما ترعة

وتع -Co كلمتين

خالل األكشن إسكر

ath.cos نا دالة

جيب تمام الزو يةالمقابلالضلع ور و

افالش فالبد من كما هو الوضع في

المجاوسابق فإن عق سفل مع أتجاه

Ta: 30ن لديك زاوية

و الزاويةظل سم طول ال ÷ قابللم

الزاوي ظلسب لي العالقة فكما تعة

المشاركين في اخالل األكشن إسكر

ath.tan نا دالة

اعلى هذه العالقة طول ا= الزاوية م

ه لو قولت لك أحسطبيعةيعكس طبعا

عن ث أنها عبارة

هذه العالقة من خال

أستعملن ل السابق

!.. مهمةدالة جيب الزاوية

المجاوالضلع لكنأننا في برنامج الف

ك لبرنامج الفالش

في الشكل الستتجه لألس لزاوية

ngentللدالة ة كانمثال لو ماء أنه

على هذه العالقة اطول الضلع ا= ية

ه لو قولت لك أحسطبيع يعكس طبعاأحد الضلعين ألن

هذه العالقة من خال

أستعملن السابقل

ع واطلقأوتمام جيب

نهبمعنى أسم طواالسم حيثلال نختبر هول

في المثال

ملحوظة مقد طبقنا القاعدة ول

لو أولكن yسيالرأ

كما ترى ي أن التر بالنسبة.3

وجد العلمواطلقوا ع

الزاوي ظل

بمعنى انهسم طواال

المماس ألولنختبر ه

في المثال

  3.0 أكشن إسكربت | أساسيات حساب المثلثات 23 

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

.دوال السابقة 3المتعلقة بحساب المثلثات وهم في الواقع ليسوا دوال جديدة ولكنهم مجرد دوال عكسية للـ 6دوال من الدوال 3يتبقى

:Arccosineو Arcsine بالنسبة للدالتين و Arcsineالزاوية فيعطى لنا نسبة طول الضلعين إلى بعضهم أما مين نعطيهتالدالتين السابق كنا في بمعنى أن Cosineوالـ Sineهما عكس الدالتين الـ

Arccosine بالطبع بالراديان و ليس بالدرجاتلنا الزاوية و يعطوام النسبة فنعطيه. فسوف 0.5النسبة arcsineعطينا للدالة ذا أإأما هنا فالعكس 0.5النسبة أخرجت لنا الدالة 30في السابق عندما كنا نريد عمل جيب الزاوية ,ولكي تتضح الصورة

!.. بالطبعفي نظام الراديان درجة 30الزاوية مقابل عطي لنا تtrace(Math.asin(0.5) * 180 / Math.PI);

.Math.asin وصيغتها Arcsine الدالةاستخدمنا السابق في المثال

:فسيصبح الكود كاآلتي Math.acosوصيغتها Arccosineستعمال دالة اردنا أأما لو

trace(Math.acos(0.865) * 180 / Math.PI); .درجة 30وبالطبع سيخرج لنا

:Arctangentة بالنسبة للدال .قياس الزاويةسوف تخرج لنا نسبة المقابل إلى المجاورلها عندما نعطي . Tangentعكس الدالة ىتماما مثل الدالتين السابقتين فه

:ولكن المميز لها انها لهذه الدالة نوعين .()Math.atanأما النوع األول يعمل تماما مثل الدالتين السابقتين وصيغتها -

:مثال trace(Math.atan(0.577) * 180 / Math.PI);

.درجة 30من تخرج لك درجة قريبةسوف !.. فلمعرفة سبب وجوده أنظر الشكل التاليأن بالنسبة للنوع الثاني -

موجبة هم قيمللبرنامج الفالش من اليسار إلى اليمين ولذلك ف xيتجهان مع االتجاه الطبيعي لمحور األفقي الثانيو األولللمثلث الضلع المجاور,مثلثات 4الرسم يوضح لبرنامج الفالش من أعلى إلى yأسي س التدريج الطبيعي للمحور الريتجهان عك الرابعو األولفي المثلث الضلع المقابلوايضا . الرابعو الثالثوالعكس صحيح مع المثلث

.الثالثو الثاني أسفل ولذلك فلهم قيم سالبه و العكس صحيح مع المثلث :سوف نحصل على التالي Arctangentوعند محاولتنا لإليجاد النسب الخاصة بدالة

-2/1: المثلث األول 2/1: المثلث الثاني -2/1: المثلث الثالث 2/1أي -1/-2:المثلث الرابع

24

 

وليست ميز جبة ت

ي يكافىء

ص قطر

ي برنامج

ر يمكن ا

ن دوران

3.0 ن إسكربت

.نشاء ا. xوقيمة المجاور

ة السالبة والموج

والذيطر الدائرة

وس يساوي نصالق

هيم فيهذه المفا

.ة الفأرةا الكثير من األفك

اليمن وبدونر إلى

أكشن | ب المثلثات

علها تتحرك كيفماو y قيمة المقابل

شارةفاإل ينشابه

صف قطنحساب ى

حيث أن طول ا. م

ن كيفية توظيف ه

يدور ليتتبع حركةوهناك . ة وهكذا

سارلفالش من الي

أساسيات حساب

ط العناصر و تجعلدخل لها طلب أن تمتش ينحداثيجد إ

.

تمد باألساس على

في هذا النظام رة

طبيقات مباشرة عن

ي موفي كليب مثالك فى اتجاه الفأرة

لفلبرنامج ا xفقي (sta.

 

.م الثالثطوط وهمية تربط

M حيث أنها تتطلنه ال يو لتتأكد أ

.Arcحظ المقطع

يعتا وهذا النظام

قسمة إليها الدائر

:فقط التالي

تطدأ بأخذ أمثلة و .اللها

من تجعل ا أردت أص تتابع وتتحرك

طبيعي للمحور األ(geصف المسرح

الثاني أم, م الرابع خطكن سوف تكون

Math.atan2(yلشكل السابق ع ا

Arctangen.

Arctange نالح

ت الخاصة بالزوايا

المقس 6ن األقواس

.قوسالل هذا

عم سوف تسخدم

.سكربت

ولذلك فلنبد. بهن تنفذها من خال

إذا ثالمف. ة معينةن تجعل عين شخص

تجاه الطون في اإلa وضعه في منتص

:ون الناتج كاآلتي

د المثلث األول أمسم مثلثات و لكن

A وصيغتها y, x)راجع .ت بسهولة

ntاني من الدالة

Arccosin وent

في الحسابات ديان

من) arc( قوس

طول طريق حساب

في الغالب األعكن .ي

في األكشن إس سم

ةت والدوال الخاصيسية مميزة يمكن

وير عنصر بزاويةدنأو أيتتبع الفأرة

ع البداية حيث يكوarrow_mc سم

ع األول سوف يكو

ميز هل أنت تقصدات ألننا سوف نرس

Arctangentة مثلثات 4ا بين الـ

دى دقة النوع الثا

neو Arcsineى

داظام الرن ستعمل

يساسه طول أى أ

س الزاوية عن ط

ولكندوال السابقة Arct النوع الثاني

سك دوال بهذا اال

ة لحساب المثلثاتلة هناك حركة رئي

في تد هو ع الثاني ألعاب أو شكل ي

ا هو وضع ألن هذسا ي النسخةعطأ

! ؟..كة الفارة

Arctan من النوع26

26.5- مج الفالش أن يم

المثلثا حساب سوع الثاني من دالةمكنها التمييز ما

وهذا يعكس مد .ت

ث وهىكسية الثال

!؟..د

يس كشن إسكربت

والذي يحدد على

بحساب قيا كربت

د 6تاج إلى كل الـ C والـ tangent

علم فقط أنه هناك

مفاهيم األساسيةفلكل دالإسكربت

Ar:

Arctange النوعتخدمها في عمل

.م هذه الفكرة

إلى اليمين هجاهإلى موفي كليب

م يتتبع دائما حرك ! .. ل التالي

ngentبيق الدالة 6.57: ألول والرابع

57: ثاني والثالث كيف يمكن للبرنامت لك فإننا ال ندرست الحاجة إلى النو

ك يموبذل. نهائيةمثلثات 4ت في الـ

سماء الدوال العكال

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

األكت من قبل فإن

وجاور في المثلث

يقوم األكشن إسك

تحت نك لنالذكر أSin والـCosine

لتعدوال 6ذكر الـ

قد أكتمل شرح المن خالل األكشن إ

rctangent...تغير الزاوية

entدام لدالة الـ رة ممكن أن تستمن خالل استخدام

تججعل اوأ سهم حولهثم . 0زاوية

سنجعل هذا السهملفكرة تأمل الشكل

وعند تطبيالمثلث األالمثلث الثوالسؤال كفكما قولتولذك كانتالنسبة الناإلحداثيات

بالنسبة ال

لماذا هذا

كما ذكرت

الضلع المج

وي. الدائرة

والجدير با eدالة الـ

ولكن تم ذ

فق إلى هناالفالش من

t 2دالة الـ التدوير وتدالة

ستخدبرز اأهذه الفكرتطبيقها م

:مثالبرسم قم عند الز يأ

إذا كيف سلتوضيح الف

  3.0 أكشن إسكربت | أساسيات حساب المثلثات 25 

بحيث نستطيع يربط المؤشر بسهم مثلث وهميلذلك رسمنا . مؤشر الفأرة إلىر يبزاوية ليش دورن يأ السهم الفارة لألعلى ونريد مؤشر حركناأننا ح يوضالشكل السابق . وحصلنا على الرسم التوضيحي السابق أن نستغل اإلحداثيات األفقية والرأسية

.من اليسار 300بيكسل من أعلى و 100تبعد هو متواجد عند نقطة مثالف yسيوإحداثي رأ xلمؤشر الفأرة إحداثي أفقي • .بيكسل من اليسار 200بيكسل من أعلى و 200نقطة تبعد مثال هو متواجد عندف yسيوإحداثي رأ xإحداثي أفقي والسهم له •

.الضلع المجاور عن طريق طرح اإلحداثي األفقي لمؤشر الفأرة من اإلحداثي األفقي للسهمطول هو عليه اآلنكل ما نستطيع أن نحصل .من اإلحداثي الرأسي للسهموايضا نستطيع أن نحصل على طول الضلع المقابل عن طريق طرح اإلحداثي الرأسي لمؤشر الفأرة

.ثم نحول الناتج من الراديان إلى الدرجات. النوع الثاني نستطيع الحصول على زاوية الدوران arctangentوبإستخدم دالة :الكود كالتاليوسيكون

// ة بإستمراريتم تحديث الحرآ يلك ENTER_FRAME حدث من النوع نتظارإإضافة دالة addEventListener(Event.ENTER_FRAME, target); //ENTER_FRAME حدث إنتظار إنشاء دالة function target(event:Event):void { // المجاور الضلع طول يحمل متغير عمل

var adjacent:Number = mouseX - arrow_mc.x; // المقابل الضلع طول يحمل متغير عمل

var opposite:Number = mouseY - arrow_mc.y; حساب زاوية الدوران//

var radians:Number = Math.atan2(opposite, adjacent); // الدرجات إلى الرايان من الزاوية قياس تحويل بعد السهم تدوير

arrow_mc.rotation = radians * 180 / Math.PI; }

: Sineالـة دال دالة الحركة الناعمة او السلسة

كون حادة وليست ناعمة فهى ولكن الحركة سوف ت. بيكسل واحد تخيل لو أننا نريد تحريك موفي كليب إلى أعلى مثال فإننا بالتأكيد سوف ننقص أرتفاعه بمقدار مثال .من مكان إلى أخر بشكل حادنتقال إلفقط ا

يجعل الحركة ناعمة وسلسة ليست مجرد االنتقال من مكان بتدريج ثابت ودقيق جداقيمة او زيادتها بشكل دوري ينقاص أإحظ هناك طريقة تساعد على ولكن لحسن ال !.. sine waveالجيب ) موجة(منحنى فكرة هذه الطريقة بإستخدام .إلى أخر

:أساس قاعدة مهمة وهى أنالفكرة مبنيه على

0هـــــو 0جيــب الزاوية 1هـــو 90وجيب الزواية 0هو 180وجيب الزواية -1هو 270وجيب الزواية 0هو 360وجيب الزواية

.هذه الزاويا والصادي يمثل قيمة جيب 360حيث أن المحور السينى يمثل الدرجات من صفر إلى مدي قوة ودقة هذه الدالة الشكل التالي يوضح

ثم تنقص بالسالب بنفس المعدل إلى ان تصل 180ثم تنقص بنفس المعدل إلى أن تصل إلى أدنها عند 90فهناك معدل ثابت في الزيادة إلى أن تصل إلى ذروتها عند .ثم تعيد الكرة مرة أخرى 360 ىثم تزداد إلى ان تصل إل 270إلى أدنها عند

  3.0 أكشن إسكربت | أساسيات حساب المثلثات 26 

!.. أنظر الشكل التالي

ثم 1ى ثم تزيد بنفس المقدار إل 0ثم تقل بنفس المقدار إلى 1ثم تزيد بمقدار ثابت إلى 0سوف نحصل على 360إلى 0إذا لو أمرنا البرنامج مثال بعمل جيب الزاويا من المعدل الثابت في الحركة حصلنا على شكل منحنى وليس وبفضل 1ومن ثم فإنه بفضل التدريج الدقيق ألنه كسور ما بين الصفر و .. هكذاو 0 ىتقل بنفس المقدار إل

.ستغالل هذه الفكرة في عمل حركة سلسة وناعمةاولذلك يمكن .خطوط مستقيمة وحركة ناعمة وسلسة متمثلة في شكل المنحنى

بمقدار 0 إلى 1أو نجعلها تقل من 1إلى 0ين ق جدا ما بجعل قيمة ما تزيد بمقدار دقيفي هذه الفكرة هى خلق تدريج دقيق عن طريق جيب الزاوية منحنى أى أن فائدة .لكي نكبر قيمة هذه الكسور 50ولكن لكي تكون الزيادة مرئية وواضحة نضرب مثال في .دقيق جدا

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

.50إذا ضربنا التدريج في 150 ىإلو ينخفض 250فمعنى هذا انه سيرتفع بتدريج دقيق إلى 400كليب الذي نريد تحريكه في منتصف مسرح طوله

:مثال .ball_mc سما ي النسخةحولها إلى موفي كليب واعطدائرة و رسمقم ب

// الحرآة تحديثيتم يلك ENTER_FRAME حدث من النوع نتظارإإضافة دالة addEventListener(Event.ENTER_FRAME, smoothMove); // للتدريجعطاءه القيمة صفر ليكون آنقطة بداية وإ angle سمانشاء متغير بإ var angle:Number = 0; وضع الموفي آليب في منتصف المسرح على المحور السيني// ball_mc.x = stage.stageWidth / 2; //ENTER_FRAME حدثإنتظار دالة إنشاء function smoothMove(event:Event):void { // صلي للموفي آليب في منتصف المسرحألإلى الموضع ا) التدريج(إضافة قيمة جيب الزاوية // الحرآةلتكون الحرآة واضحة وهذه تسمى مدى 50الحظ أننا ضربنا في ball_mc.y = stage.stageHeight / 2 + Math.sin(angle) *50; // سرعأوهى سرعة الحرآة وآلما ذات آان الحرآة نزيد قيمة المتغير angle بمقدار 0.1 360إلى القيمة 0درجة من القيمة 0.1ان دالة جيب الزاوية تتحرك بمقدار يأ وهذا بالطبع تدريج دقيق جدا ويجعل الموفي آليب يتحرك ببطىء// angle += 0.1; }

  3.0 أكشن إسكربت | أساسيات حساب المثلثات 27 

:فقط نجعل الموفي كليب يتحرك لإلمام عند طريق تعديل الكود بحيث يصبح حركة موجةلعمل و

// الحرآة تحديثيتم يلك ENTER_FRAME حدث من النوع نتظارإإضافة دالة addEventListener(Event.ENTER_FRAME, smoothMove); // للتدريجعطاءه القيمة صفر ليكون آنقطة بداية وإ angle سمانشاء متغير بإ var angle:Number = 0; //ENTER_FRAME حدثإنتظار دالة إنشاء function smoothMove(event:Event):void { // على مستوى المحور األفقيتحريك الموفي آليب إلى األمام ball_mc.x += 1 // صلي للموفي آليب في منتصف المسرحألإلى الموضع ا) التدريج(إضافة قيمة جيب الزاوية // لتكون الحرآة واضحة وهذه تسمى مدى الحرآة 50الحظ أننا ضربنا في ball_mc.y = stage.stageHeight / 2 + Math.sin(angle) *50; // سرعأعة الحرآة وآلما ذات آان الحرآة وهى سر نزيد قيمة المتغير angle بمقدار 0.1 360إلى القيمة 0درجة من القيمة 0.1ان دالة جيب الزاوية تتحرك بمقدار يأ وهذا بالطبع تدريج دقيق جدا ويجعل الموفي آليب يتحرك ببطىء// angle += 0.1; }

:بدل من الحركة التموجية عن طريق تعديل الكود ليصبح كاألتي حركة نبضيةويمكن أيضا عمل

// الحرآة تحديثيتم يلك ENTER_FRAME حدث من النوع نتظارإإضافة دالة addEventListener(Event.ENTER_FRAME, smoothMove); // للتدريجعطاءه القيمة صفر ليكون آنقطة بداية وإ angle سمانشاء متغيربإ var angle:Number = 0; وضع الموفي آليب في منتصف المسرح على المحور السيني والصادي//

ball_mc.x = stage.stageWidth / 2; ball_mc.y = stage.stageHeight / 2;

//ENTER_FRAME حدثإنتظار دالة إنشاء function smoothMove(event:Event):void { نعدل في قيمة التكبير// ball_mc.scaleX= ball_mc.scaleY = 1 + Math.sin(angle); // سرعأعة الحرآة وآلما ذات آان الحرآة سر ىوه نزيد قيمة المتغير angle بمقدار 0.1 360إلى القيمة 0درجة من القيمة 0.1ان دالة جيب الزاوية تتحرك بمقدار يأ وهذا بالطبع تدريج دقيق جدا ويجعل الموفي آليب يتحرك ببطىء// angle += 0.1; }

:بسرعتين مختلفين عن طريق تعديل الكود ليصبح كاألتي تدريجين عن طريقة استعمال حركة عشوائيةوأخيرا ممكن عمل

// الحرآة تحديثيتم يلك ENTER_FRAME حدث من النوعنتظار إإضافة دالة addEventListener(Event.ENTER_FRAME, smoothMove); // للتدريجأعطاءهم القيمة صفر ليكون آنقطة بداية angleY, angleX سمانشاء متغيرين بإ

  3.0 أكشن إسكربت | أساسيات حساب المثلثات 28 

var angleX:Number = 0; var angleY:Number = 0; وضع الموفي آليب في أول المسرح على المحور السيني// ball_mc.x = 0; //ENTER_FRAME إنتظار حدثدالة إنشاء function smoothMove(event:Event):void { // صلي للموفي آليب في منتصف المسرح للمحور السينىألإلى الموضع ا) التدريج(الزاوية إضافة قيمة جيب // المسرح للمحور الصاديصلي للموفي آليب في منتصف ألإلى الموضع ا) التدريج(الزاوية إضافة قيمة جيب ball_mc.x = 200 + Math.sin(angleX) * 50; ball_mc.y = 200 + Math.sin(angleY) * 50; متينيبق مختلفتين // نزيد قيمة المتغيرين angleX += .07; angleY += .11; }

Cosineدالة الـ متعلقة بالحركة الدائرية أو الحركة البيضاوية

جيب الزاوية Sine سمها هى عكس دالة الـاأو جيب التمام من Cosineدالة الـ:حيث أن

1هـــــو 0تمام جيــب الزاوية 0هـــو 90وتمام جيب الزواية -1هو 180وتمام جيب الزواية 0هو 270وتمام جيب الزواية 1هو 360وتمام جيب الزواية

. موضع البدايةإختالف فكالهما ينتج نفس الشكل ولكن مع .ولكنه فقط تحرك قليال جيب الزاوية Sine من خالل المنحنى التالي نستنتج أنها تشبه منحنى دالة الـ

.ذا تعلق األمر فقط بعمل حركة ناعمة أو سلسةإ Sineستخدمها بدال من دالة الـ اولذلك يمكن

:ج حركة أخرى وهى الحركة الدائريةأن تنت Sineذا استعملت مع دالة الـ إولكن يمكن لعمل حركة أفقية جبب التمام Cosineلعمل حركة رأسية ودالة الـ جيب الزاوية Sineيمكن تطبيق دالة الـ Cosine والـ Sineمن العالقة السابقة بين دالة الـ

29

 

آة// add يج// var //E fun نى//دي//رة// رع// }

3.0 ن إسكربت

الحرآ حديثتيتم يلك

dEventListener(

للتدريكون آنقطة بداية

r angle:Number

NTER_FRAME

nction smoothMo

السين المسرح للمحورلمسرح للمحور الصاد

هو نصف قطر الدائر 1

ball_mc.y = ball_mc.x =

سرأالحرآة تذات آان

angle += 0.

أكشن | ب المثلثات

ENTER_FRAM

Event.ENTER_F

عطاءه القيمة صفر ليك

= 0;

حدثإنتظار دالة شاء

ove(event:Even

في آليب في منتصفي آليب في منتصف ال

100الحظ ان الرقم

200 + Math.sin200 + Math.cos

سرعة الحرآة وآلما ذ

1;

أساسيات حساب

E ظار حدث من النوع

FRAME, smoothM

عوإ angle سماتغير ب

إنش

nt):void {

الموضع االصلي للمولموضع االصلي للموفي

n(angle) *100; s(angle) *100;

س ىوه an بمقدار 0.1

. المحور األفقي5. 5.

 

نتظإإضافة دالة

Move);

نشاء متإ

إلى ) التدريج(لزاوية إلى الم) التدريج(زاوية

ngle زيد قيمة المتغير

على Sine ة الـ 50إلى 100ي من 50إلى 100ي من

:التالي ي

إضافة قيمة جيب ا إضافة قيمة جيب الز

نز

محور الرأسي ودالةقيـلى المحور األف

لى المحور الرأسي

لشكل التوضيحي

.ball_mc م

Cosine على المل مدى الحركة علل مدى الحركة عل

أنظر ال.لى اليمين

سما ي النسخةعط

eق تطبيق دالة الـقلل بيضاوي رأسي

قلل قيـبيضاوي أف

إلدائرة من اليسار

ى موفي كليب واع

لحركة عن طريقبتجاه ايتحرك في بتجاه ايتحرك في

موفي كليب في د

حولها إلىدائرة و

تجاه ااكنك عكس ل الموفي كليب يل الموفي كليب ي

فتحرك الم

:مثالبرسم قم

يمك -لجعل -لجعل -

  3.0 أكشن إسكربت | أساسيات حساب المثلثات 30 

:نظرية فيثاغورس ..المسافة بين نقطتينحساب

:القاعدة التالية فيثاغورسالرياضي اإلغريقي العالم كتشفا

= ²[ [ الوترطول = ²[ [ قابلالم طول الضلع + ²[ المجاور طول الضلع ] .مربع طول الوتر= مربع طول الضلع المقابل + اي أن مربع طول الضلع المجاور

!.. أنظر الشكل التالي

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

3x3 +4x4 =مربع طول الوتر. .مربع طول الوتر= 16+ 9 إذا

5= طول الوتر ...أنظر المثال التالي يمكن أستغالل هذه النظرية في معرفة المسافة بين نقطتين

:مثال square2_mc ىواألخر square1_mc أحدهم وحولهم إلى موفي كليب وسمي نسخة مربعين قم برسم . خرأعلى من األ احدهمأكن يولعلى مسافتين مختلفتين اوضعهم

.وسيكون الكود مبنى على الفكرة السابقة

  3.0 أكشن إسكربت | أساسيات حساب المثلثات 31 

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

.()trace التتبع من خالل دالة التتبع لوحةلنا النتيجة في ظهربينهم ثم نجعل البرنامج يوبتطبيق نظرية فيثاغورس نحصل على طول الوتر الذي يمثل المسافة الفاصلة

:وسيكون الكود كاألتي// المجاور الضلع طول يحمل متغير عمل var adjacent:Number = square1_mc.x - square2_mc.x; // مقابلال الضلع طول يحمل متغير عمل var opposite:Number = square1_mc.y - square2_mc.y; //dist دالة استخدام Math.sqrt سمها متغير في الناتج تخزين ثم للنتيجة التربيعي الجذر لعمل var dist:Number = Math.sqrt(adjacent * adjacent + opposite * opposite); //trace التتبع من خالل دالة التتيع لوحة فيالمحسوبة إظهار المسافة trace(dist);

أغلب الحركات مبنية على هذه والمهم أن تعرف أن .مدى قوة وفاعلية حساب المثلثات في استخداماته لخلق أفكار وحل مشكالت كثيرة في عمل الحركات ىن كما ترواآل .Actionscript 3.0األساسيات وبفهمك لهذه األساسيات تستطيع أن تنطلق في عالم الـ

؛ أنتهـــــــــــــــــــــــــــى