abohmam
08-03-2015, 08:27 PM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
نتابع معا شرح الأكشن اسكربت
شرح الأكشن سكربت 3 الجزء الثالث: قائمة العرض (Display List)
تعلم AS3 - جزء3 [ display list] - الدرس 1 [الكلاسات الجرافيكية]
مرحبا بكم في هذا الجزء الجديد من دورة تعلم الاكشن سكربت 3
العنوان (display list (liste d'affichage
http://1.bp.blogspot.com/-ss_NL3Pyg2U/VF9ySmPkZhI/AAAAAAAAASs/wbBaj3wwjKY/s1600/displayList.png
___________________________
في الجزء الثاني تكلمنا عن الكلاسات و خصائصها
كيفية انشائها, و وضها في حزم خاصة (packages) و تعرفنا على الكثير من المفاهيم المهمة
في هذا الدرس سنرى أنواعا جديدة من الكلاسات و هي الكلاسات الجرافيكية
الكلاسات الجرافيكية :
هي كلاسات جاهزة في الفلاش , طريقة انشائها كما سبق و رأينا في الجزء السابق
إلاّ أنّها مرئية و نعني بهذا ان هذه الكائنات هي رسومات جرافيكية قد تكون أيقونات أو أشكال هندسية أو أزرار
يراها المستخدم على الشاشة.
في الأكشن سكربت 3, كل الكلاسات الجرافيكية مخزّنة في ثلاث حزم (packages) مخلفة و هي:
flash.display
flash.media
flash.text
اليكم هذه الشجرة عن كيفية انشائها حيث كل كلاس في الاسفل ترث من الكلاس في الأعلى
http://4.bp.blogspot.com/-Mz62HOOKQh8/VF906lpssWI/AAAAAAAAAS0/LxTTcyOWv1c/s1600/displayobject_subclasses.png
في هذا الشكل نرى كل الكلاسات الجرافيكية التي يمكننا استعمالها في برمجتنا بالأكشن سكربت 3
لماذا كل هذا العدد الكبير من الكلاسات الجرافيكية؟
في النسخ السابقة من الاكشن سكربت كانت هناك أربع كلاسات جرافيكية فقط و هي :
MovieClip , Button , TextField, BitmapData
و لكن الاكشن سكربت 3 يهتم كثيرا بتبسيط و تخفيف البرامج لكي لا يستهلك الكثير من الموارد
(الذاكرة المركزية مثلا)
كمثال بيسيط
في النسخة السابقة الكائن الوحيد الذي يمكننا من رسم شكل بسيط كان من نوع MovieClip
و هذا يعني ان هذا الكائن يملك كل خصائص و دوال ال MovieClip و التي تحمل في الذاكرة المركزية
إلاّ أنّنا لا نحتاجها جميعا وهذا يعني ان كل تلك المعلومات المخزنة في الذاكرة غير ضرورية
فكل ما نحتاجه هو رسم بسيط نضعه في الشاشة
في الاكشن سكربت 3 للقيام نفس الشئ يمكننا استعمال الكلاس Shape الأكثر خفة
_____________________________
في الجزء الثاني في درس التوريث قلنا أن كل كلاس بنت تدعى (subclass) ترث من الكلاس الام (super class)
مثلا dog يرث من animal
نقول أن كل كائن نوع dog هو كائن من نوع animal
يعني كل dog هو animal
في الأكشن سكربت 3 هناك ثلاث أنواع من الكائنات الجرافيكية
1. flash.display.DisplayObject
في الشكل السابق نرى أن كل الكلاسات الجرافيكية ترث من الكلاس DisplayObject
( flash.display.DisplayObject)
اذن كل كائن جرافيكي يعرض على الشاشة هو من نوع DisplayObject (الازرار, النصوص, الأنيمشن ..الخ)
فهذه الكلاس تحتوي على كل الخصائص الخاصة بالكائن الجرافيكي كالموقع في الشاشة (position)
الزاوية (rotation)..الخ
2. flash.display.InteractiveObject
نبقى دائما في الشكل السابق حيث نلاحظ أن هناك ثلاث كلاسات ترث من الكلاس InteractiveObject
و نقصد ب interactive التفاعل
يعني أن كل كائن من نوع InteractiveObject هو كائن يتفاعل مع ما يقوم به المستخدم كالضغط على الماوس او لوحة المفاتيح
3.flash.display.DisplayObjectContainer
الكائنات من نوع DisplayObjectContainer يمكنها أن تحتوي على كائنات جرافيكية أخرى
و الذي تسمى بالكائن الابن (Child)
اذن كل الكلاسات التي ترث من هذه الكلاس تدعى ب" حاويات الكائنات الجرافيكية"
___________________________
خلاصة:
-يجب علينا استعمال الكلاس الأكثر خفّة (حسب احتياجنا).
-الكلاسات الجرافيكية موجودة في ثلاث حزم (packages) و هي
flash.display , flash.media, flash.text.
__________________________
Display List :
(هذه المعلومات قد تكون صعبة الفهم في البداية لكن سيتم شرحها بالصور و بالتفصيل)
عندما نقوم بتشغيل برنامجنا الفلاشي (عن طريق قارئ الفلاش flash player)
يقوم هذا الاخير بانشاء كائنين (DisplayObject) / حتى لو كان البرنامج فارغا /
الاول و هو Stage و هو الذي سيحتوي على كل الكائنات الجرافيكية (الجذر)
و الثاني هو المشهد الرئيسيالكائنMainTimeline لملف SWF .
اذن Stage يحوي MainTimeline.
عند اضافة اي كائن (زر أو رسم أو أنمي ...الخ) في المسرح الرئيسي, ستكون هذه الكائنات أبناء ال MainTimeline
و يمكن لتلك الكائنات ان تحتوي -أي تكون أب- لكائنات اخرى ....الخ
هذه الشجرة (hierarchy) تسمى ب Display List
http://4.bp.blogspot.com/-z8aOm8FHZIs/VGDYrufrdQI/AAAAAAAAATE/LI5AaKdfSeA/s1600/1279160975117.png
__________________________
تطبيق:
لكي نتأكد من صحة هذا, نقوم بانشاء مشروع ActionScript3 فارغ
http://2.bp.blogspot.com/-i4s8aG-kDGQ/VA5h9mAukPI/AAAAAAAAAM8/hoQtj3qblPM/s1600/1.gif
ثم نكتب هذا الكود
trace(this); // MainTimeline
trace(this.parent); // Stage
السطر الاول, الكلمة this تعني المشهد الرئيسي الذي كتبنا فيه الكود و هو كما نرى MainTimeline
أب المشهد الرئيسي كما سبق و رأينا هو Stage و هو الجذر في الشجرة السابقة
لمعرفة عدد أطفال أي كائن من نوع DisplayObjectContainer نستعمل الخاصية numChildren.
____________________
numChildren :
هذه الخاصية مهمة تمكننا من معرفة عدد أطفال أي كائن جرافيكي من نوع DisplayObjectContainer
يعني (Loader, Sprite, Stage)
فلننشئ مشروع اكشن سكربت 3 فارغ و نكتب ما يلي
trace(this.numChildren); // 0
trace(stage.numChildren); // 1
السطر الاول سيكتب لنا 0 لان المشروع فارغ و لا يوجد أي كائن في المسرح الرئيسي
اذا ليس هناك أي طفل لل MainTimeline
أما السطر الثاني فيكتب لنا 1 فكما نعلم ان Stage يملك طفلا و هو mainTimeline
اذا أضفنا زرا ما على المسرح الرئيسي فالسطر الاول لن يبقى 0 بل يصبح 1
يعني ان ال MainTimeline يملك طفلا واحدا (وهو الزر)
السطر الثاني يبقى 1 أيضا ف Stage له طفل مباشر واحد و هو MainTimeline
الشجرة تصبح هكذا
Stage
|
MainTimeline
|
SimpleButton
________________________
في الدرس القادم سنرى كيفية انشاء كائنات (instance) من الكلاسات الجرافيكية
عن طريق الأشكن سكربت 3 و اظهارها على الشاشة
السلام عليكم ورحمة الله وبركاته
نتابع معا شرح الأكشن اسكربت
شرح الأكشن سكربت 3 الجزء الثالث: قائمة العرض (Display List)
تعلم AS3 - جزء3 [ display list] - الدرس 1 [الكلاسات الجرافيكية]
مرحبا بكم في هذا الجزء الجديد من دورة تعلم الاكشن سكربت 3
العنوان (display list (liste d'affichage
http://1.bp.blogspot.com/-ss_NL3Pyg2U/VF9ySmPkZhI/AAAAAAAAASs/wbBaj3wwjKY/s1600/displayList.png
___________________________
في الجزء الثاني تكلمنا عن الكلاسات و خصائصها
كيفية انشائها, و وضها في حزم خاصة (packages) و تعرفنا على الكثير من المفاهيم المهمة
في هذا الدرس سنرى أنواعا جديدة من الكلاسات و هي الكلاسات الجرافيكية
الكلاسات الجرافيكية :
هي كلاسات جاهزة في الفلاش , طريقة انشائها كما سبق و رأينا في الجزء السابق
إلاّ أنّها مرئية و نعني بهذا ان هذه الكائنات هي رسومات جرافيكية قد تكون أيقونات أو أشكال هندسية أو أزرار
يراها المستخدم على الشاشة.
في الأكشن سكربت 3, كل الكلاسات الجرافيكية مخزّنة في ثلاث حزم (packages) مخلفة و هي:
flash.display
flash.media
flash.text
اليكم هذه الشجرة عن كيفية انشائها حيث كل كلاس في الاسفل ترث من الكلاس في الأعلى
http://4.bp.blogspot.com/-Mz62HOOKQh8/VF906lpssWI/AAAAAAAAAS0/LxTTcyOWv1c/s1600/displayobject_subclasses.png
في هذا الشكل نرى كل الكلاسات الجرافيكية التي يمكننا استعمالها في برمجتنا بالأكشن سكربت 3
لماذا كل هذا العدد الكبير من الكلاسات الجرافيكية؟
في النسخ السابقة من الاكشن سكربت كانت هناك أربع كلاسات جرافيكية فقط و هي :
MovieClip , Button , TextField, BitmapData
و لكن الاكشن سكربت 3 يهتم كثيرا بتبسيط و تخفيف البرامج لكي لا يستهلك الكثير من الموارد
(الذاكرة المركزية مثلا)
كمثال بيسيط
في النسخة السابقة الكائن الوحيد الذي يمكننا من رسم شكل بسيط كان من نوع MovieClip
و هذا يعني ان هذا الكائن يملك كل خصائص و دوال ال MovieClip و التي تحمل في الذاكرة المركزية
إلاّ أنّنا لا نحتاجها جميعا وهذا يعني ان كل تلك المعلومات المخزنة في الذاكرة غير ضرورية
فكل ما نحتاجه هو رسم بسيط نضعه في الشاشة
في الاكشن سكربت 3 للقيام نفس الشئ يمكننا استعمال الكلاس Shape الأكثر خفة
_____________________________
في الجزء الثاني في درس التوريث قلنا أن كل كلاس بنت تدعى (subclass) ترث من الكلاس الام (super class)
مثلا dog يرث من animal
نقول أن كل كائن نوع dog هو كائن من نوع animal
يعني كل dog هو animal
في الأكشن سكربت 3 هناك ثلاث أنواع من الكائنات الجرافيكية
1. flash.display.DisplayObject
في الشكل السابق نرى أن كل الكلاسات الجرافيكية ترث من الكلاس DisplayObject
( flash.display.DisplayObject)
اذن كل كائن جرافيكي يعرض على الشاشة هو من نوع DisplayObject (الازرار, النصوص, الأنيمشن ..الخ)
فهذه الكلاس تحتوي على كل الخصائص الخاصة بالكائن الجرافيكي كالموقع في الشاشة (position)
الزاوية (rotation)..الخ
2. flash.display.InteractiveObject
نبقى دائما في الشكل السابق حيث نلاحظ أن هناك ثلاث كلاسات ترث من الكلاس InteractiveObject
و نقصد ب interactive التفاعل
يعني أن كل كائن من نوع InteractiveObject هو كائن يتفاعل مع ما يقوم به المستخدم كالضغط على الماوس او لوحة المفاتيح
3.flash.display.DisplayObjectContainer
الكائنات من نوع DisplayObjectContainer يمكنها أن تحتوي على كائنات جرافيكية أخرى
و الذي تسمى بالكائن الابن (Child)
اذن كل الكلاسات التي ترث من هذه الكلاس تدعى ب" حاويات الكائنات الجرافيكية"
___________________________
خلاصة:
-يجب علينا استعمال الكلاس الأكثر خفّة (حسب احتياجنا).
-الكلاسات الجرافيكية موجودة في ثلاث حزم (packages) و هي
flash.display , flash.media, flash.text.
__________________________
Display List :
(هذه المعلومات قد تكون صعبة الفهم في البداية لكن سيتم شرحها بالصور و بالتفصيل)
عندما نقوم بتشغيل برنامجنا الفلاشي (عن طريق قارئ الفلاش flash player)
يقوم هذا الاخير بانشاء كائنين (DisplayObject) / حتى لو كان البرنامج فارغا /
الاول و هو Stage و هو الذي سيحتوي على كل الكائنات الجرافيكية (الجذر)
و الثاني هو المشهد الرئيسيالكائنMainTimeline لملف SWF .
اذن Stage يحوي MainTimeline.
عند اضافة اي كائن (زر أو رسم أو أنمي ...الخ) في المسرح الرئيسي, ستكون هذه الكائنات أبناء ال MainTimeline
و يمكن لتلك الكائنات ان تحتوي -أي تكون أب- لكائنات اخرى ....الخ
هذه الشجرة (hierarchy) تسمى ب Display List
http://4.bp.blogspot.com/-z8aOm8FHZIs/VGDYrufrdQI/AAAAAAAAATE/LI5AaKdfSeA/s1600/1279160975117.png
__________________________
تطبيق:
لكي نتأكد من صحة هذا, نقوم بانشاء مشروع ActionScript3 فارغ
http://2.bp.blogspot.com/-i4s8aG-kDGQ/VA5h9mAukPI/AAAAAAAAAM8/hoQtj3qblPM/s1600/1.gif
ثم نكتب هذا الكود
trace(this); // MainTimeline
trace(this.parent); // Stage
السطر الاول, الكلمة this تعني المشهد الرئيسي الذي كتبنا فيه الكود و هو كما نرى MainTimeline
أب المشهد الرئيسي كما سبق و رأينا هو Stage و هو الجذر في الشجرة السابقة
لمعرفة عدد أطفال أي كائن من نوع DisplayObjectContainer نستعمل الخاصية numChildren.
____________________
numChildren :
هذه الخاصية مهمة تمكننا من معرفة عدد أطفال أي كائن جرافيكي من نوع DisplayObjectContainer
يعني (Loader, Sprite, Stage)
فلننشئ مشروع اكشن سكربت 3 فارغ و نكتب ما يلي
trace(this.numChildren); // 0
trace(stage.numChildren); // 1
السطر الاول سيكتب لنا 0 لان المشروع فارغ و لا يوجد أي كائن في المسرح الرئيسي
اذا ليس هناك أي طفل لل MainTimeline
أما السطر الثاني فيكتب لنا 1 فكما نعلم ان Stage يملك طفلا و هو mainTimeline
اذا أضفنا زرا ما على المسرح الرئيسي فالسطر الاول لن يبقى 0 بل يصبح 1
يعني ان ال MainTimeline يملك طفلا واحدا (وهو الزر)
السطر الثاني يبقى 1 أيضا ف Stage له طفل مباشر واحد و هو MainTimeline
الشجرة تصبح هكذا
Stage
|
MainTimeline
|
SimpleButton
________________________
في الدرس القادم سنرى كيفية انشاء كائنات (instance) من الكلاسات الجرافيكية
عن طريق الأشكن سكربت 3 و اظهارها على الشاشة