الاثنين، 10 نوفمبر 2008

الدوال functions


هناك تعليق واحد:

الاميره الورديه يقول...

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





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




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




2- فى الطبقة الأولى Layer1 سنقوم بوضع إثنين من الأزرار الجاهزة فى مكتبة فلاش , اذهب للقائمة :
Window > Common Libraries > Buttons
ومن داخل قائمة Buttons اختر
Classic Buttons > Playback




ومن القائمة الأخيرة اسحب الزر Get Right , والزر Get Stop إلى المسرح
2 – قم بتحديد الزرين أثناء الضغط على مفتاح Shift , ومن لوح المحاذاة Align , قم بالنقر على Align horizontal center , وذلك لعمل محاذاة وإظهارهما بشكل متناسق .




وفى خانة Instance Nameقم بتسمية الزر العلوى الذى سيكون زر التشغيل بإسم play_btn , والزر السفلى الذى سيكون زر الإيقاف بإسم stop_btn .
3 – من لوحة المفاتيح اضغط Ctrl+F8 لإنشاء رمز من نوع موفى كليب وقم بتسميته كما فى الصورة ball_mc .
ملحوظة : كما قلنا من قبل فإن اللاحقة mc_ التى نضعها فى آخر الإسم ( وهى لتسمية الرموز من نوعية موفى كليب ) , هى عادة مستحبة فى التسمية حتى تظهر لنا تلميحات الكود أثناء الكتابة وهو شيئ مفيد للغاية , ومن اللواحق الشهيرة btn_ فى تسمية الأزرار , و txt_ فى تسمية النصوص , وstr_ فى تسمية البيانات من نوع string .. إلخ




نحن الآن داخل مسرح تحرير الرمز وسنقوم بإنشاء حركة بسيطة داخل الرمز عبارة عن كرة تتحرك من خارج الشاشة يسارا إلى خارج الشاشة يمينا , وقد تعلمنا ذلك بالطبع فى الدروس السابقة .
والآن اخرج من مسرح تحرير الرمز بالنقر على Scene 1 فى منطقة Timeline
4 – من لوحة المفاتيح اضغط Ctrl+F8 لإنشاء رمز آخرمن نوع موفى كليب أيضا وقم بتسميته logo_mc , واستورد أى صورة صغيرة لمسرح العمل عن طريق الذهاب للقائمة :
File > Import > Import to stage
وقم بحويل الصورة إلى رمز من نوع Graphic , ثم أدرج إطار مفتاحى عند الإطار 100, ثم إرجع للإطار رقم 1 وانقر على الرمز ومن لوح الخواص إجعل قيمة Alpha تساوى صفر , ثم انقر على الإطار 1 واختر نوع الحركة Motion . وهكذا صنعنا حركة عبارة عن ظهور تدريجى لصورة . بمعنى أنها لا تكون ظاهرة فى الإطار 1 لأن قيمة ألفا تساوى صفر , وتستمر فى الظهور بشكل متدرج حيث تزيد قيمة ألفا تدريجيا حتى تصل لأعلى قيمة لها وهى 100 , وهى القيمة الإفتراضية لأى عنصر فى الحالة العادية بالنسبة لظهوره على المسرح .
والآن اخرج من مسرح تصميم الرمز بالنقر على Scene 1 فى منطقة Timeline
وبالطبع كلا الرمزين من نوع موفى كليب موجودان الآن فى المكتبة ولكى نستعملهما فى العمل لابد من سحبهما إلى المسرح , ولا تنسى تسميتهما فى لوح الخصائص بنفس أسمائهما , ولمعرفة أهمية ذلك اقرأ الملحوظة التى سأذكرها بعد قليل .
5 – عدنا من جديد إلى المسرح الأساسى للفيلم , انقر على طبقة txt1 لتنشيطها , ثم بأداة Text Tool قم بعمل نص أمام زر play_btn واكتب فيه العبارة التالية :
الدالة 1 تعمل حاليا
طبعا ستستعين ببرنامج الوسيط للكتابة باللغة العربية . وإن لم يكن لديك ذلك البرنامج اكتب معنى مشابه باللغة الإنجليزية .




ثم قم بتحويل النص إلى رمز من نوع موفى كليب وقم بتسميته فى لوح الخصائص b_mc




ثم قم بالنقر على الرمز فى المسرح ومن لوح الخصائص اجعل قيمة ألفا تساوى صفر




ملحوظة فى غاية الأهمية : عند العمل فى أكشن سكريبت , لابد من تسمية أى عنصر سيكون متضمنا فى الأوامر البرمجية , وذلك بتحديده على المسرح ووضع إسم له فى لوح الخصائص , وفى أى وقت إذا قمت بعمل فيلم وعند اختباره فوجئت بظهور رسائل خطأ , قم بتفحص أسماء العناصر والتأكد من مطابقتها لنفس الأسماء فى الأوامر البرمجية . ويجب التطابق التام , ففى درس اليوم لو كتبت فى الأكشن إسم النص B_mc بدلا من إسمه الحقيقى فى لوح الخواص وهو b_mc , فببساطة سيتجاهل فلاش الأمر البرمجى ولن يقوم بتنفيذه , تماما مثلما تحاول أن تنادى شخصا إسمه أحمد , ولكنك تصيح قائلا : يا على ! .. ولن تكون هنالك أية مفاجأة إن تجاهل أحمد صيحاتك المتكررة ومضى إلى حال سبيله ..
6 – انقر على طبقة txt2 لتنشيطها , ثم بأداة Text Tool قم بعمل نص أمام زر stop_btn واكتب فيه العبارة التالية :
الدالة 2 تعمل حاليا
ثم قم بتحويل النص إلى رمز من نوع موفى كليب وقم بتسميته فى لوح الخصائص bb_mc
ثم قم بتغيير قيمة ألفا إلى صفر كما فعلنا مع النص الأول .
7 – انقر على طبقة a والتى نقوم عادة بتخصيصها للأكشن , وقم بكتابة الكود التالى :




لاحظ أننى تعمدت تقديم الأكشن على هيئة صورة , حتى أمنعك من عادة النسخ واللصق , وهى عادة غير مستحبة فى لغة أكشن سكريبت , من الأفضل أن تقوم بكتابة الأكشن كلمة كلمة , فهذه اللغة مثلها مثل أى لغة تتطلب الممارسة كى تتعلمها.
وكما ترى هذه هى الصيغة العامة للكود , كلمة function ثم إسم الدالة وهو الإسم الذى بواسطته يتم إستدعاء الدالة فى أى وقت , ثم قوسين هلاليين يمكننا أن نضع بداخلهما معاملات أو قيم أو Parameters إن إحتجنا وإلا نتركهما خاليين , ثم قوسين متعرجين { } , وبين القوسين المتعرجين نضع الأوامر البرمجية .
والآن لنلقى بنظرة على الكود , وسنشرحه بالتفصيل كل سطر برقمه :
1, 2 – قمنا بإيقاف الموفى كليب الأول والثانى , لمنعهم من الحركة تلقائيا عند تشغيل الفيلم , وذلك لأننا نريد التحكم فى تلك الحركة .
3 – هنا نقوم بالإعلان عن دالة حيث ذكرنا إسمها , وهو الإسم الذى سنقوم بواسطته بإستدعاء الدالة .
ثم وضعنا قوسين هلاليين ( ) , وهذين القوسين مخصصين لوضع المعاملات أو القيم أو Parameters داخلهما , فإن لم يوجد أى من ذلك نترك القوسين خاليين ولكن لابد من كتابتهما . وسنشرح ذلك بالتفصيل فى الدروس القادمة إن شاء الله .
ثم وضعنا قوس متعرج إفتتاحى إتجاهه لليمين لنخبر فلاش أن أى أكواد تأتى بعد ذلك القوس تنتمى للدالة , وهذا القوس نكتبه بضغط Shift مع مفتاح الحرف ج , وذلك فى وضع اللغة الإنجليزية بالنسبة للوحة المفاتيح.
2 , 3 , 4 , 5 هنا وضعنا الأكواد التى نريد من الدالة تنفيذها , وكما هو متبع نضع فاصلة منقوطة فى نهاية كل أمر برمجى لنخبر فلاش بأننا أنهينا الأمر , وأن ما يأتى بعد ذلك يكون أمر جديد , والفاصلة المنقوطة تشبه النقطة التى نضعها فى نهاية الجملة فى كتاباتنا العادية .
أوامر الدالة 1 هى : تشغيل ما لدينا من الموفى كليب , وإظهار النص الأول :
الدالة 1 تعمل حاليا
وذلك بتغيير قيمة ألفا إلى 100 , وإخفاء النص الثانى الذى يقول : الدالة 2 تعمل حاليا وذلك بجعل قيمة ألفا تساوى صفر .
وأوامر الدالة 2 هى : إيقاف ما لدينا من الموفى كليب , وإظهار النص الثانى:
الدالة 2 تعمل حاليا
وذلك بتغيير قيمة ألفا إلى 100 , وإخفاء النص الذى يقول : الدالة 1 تعمل حاليا وذلك بجعل قيمة ألفا تساوى صفر .
6 – وضعنا قوس متعرج ختامى إتجاهه لليسار علامة على أننا أنهينا أكواد الدالة , وأى أكواد تأتى بعد ذلك لا تنتمى للدالة . , وهذا القوس نكتبه بضغط Shift مع مفتاح الحرف د , وذلك فى وضع اللغة الإنجليزية بالنسبة للوحة المفاتيح.
إن إنشاء الدالة لن يفيد بأى شيئ مالم نقم بإستدعاء تلك الدالة, وهنا سنجعل الضغط على أى من الزرارين يؤدى إلى إستدعاء دالة محددة .

- انقر على زر play_btn ثم اضغط F9 واكتب الأكشن التالى :



ثم عد للمسرح وانقر على الزر stop_btn واضغط F9 وقم بكتابة الأكشن التالى :



الآن اضغط Ctrl + Enter لإختبار الفيلم
مروة محمد مسلم