المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : جولة حول أكشن سكريبت 3 - قائمة العرض Display List


azizsoft
25-03-2014, 02:37 PM
http://www.abc4web.net/upload/images2/7ttwvwqjnkozmy1.png
http://www.abc4web.net/upload/images2/wcofafsmm21ires.png


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






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



ما معنى قائمة العرض Display List

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

http://im73.gulfup.com/kCbbPy.png

لاحظ معي أخي الكريم الان كيف يتعرف برنامج الفلاش أو بالأحرى كيف يهيكل ويعرض هاته الكائنات في مشروعك
أعلاه في قائمة عرض Display List وهذه هي الصورة

http://im59.gulfup.com/mWoipa.png

لاحظ أخي الكريم ان الموفي كليب الذي وضعت فيه صورة الطفل يسمى Display Object Container
يعني حاوي لكائن وهذا الكائن Display Object هوصورة الطفل يعني يمكن أن نضغ داخل الموفي كليب عديد الكائنات المختلفة وبالتالي هو بمثابة الحاوية وبما أن جميع هاته العناصر هي فعليا داخل مسرح العمل Stage
فانه هو أيضا يعتبر Display Object Containe وشاهد ترتيبه في أعلى الصورة وهو يحوي جميع الكائنات والعناصرو يمكن أن نصل اليه من داخل أي كائن كما و يمكن طبعا التحكم في أي كائن انطلاقا من المسرح الرئيسي للعمل Stage
نلاحظ في المرتبة الثانية الشريط الزمني الرئيسي Main Timeline ويعتبر بدوره
Display Object Container باعتبار أنه حاوي لجميع الكائنات ومن المعلوم طبعا أنك تستطيع أخي الكريم حذف أي عنصر بالمسرح
من الشريط الزمني ونستخلص أن كل الكائنات بفلاش هي اما Display Object أو Display Object Container وهذا ههو المفتاح أو سر فهم مبدا العمل مع قائمة العرض Display List .
على سبيل المثال النص أو الصورة أو المقطع الصوتي هي كائنات Display Object لايمكن ان نضع داخلها عناصر أخرى
اما الموفي كليب نستطيع أن نضيف بداخله عديد العناصر وبالتالي تصبح أبناء له Children


إضافةعناصر أبناء Adding Children



الوظيفة : () addChild

لاضافة كائن أو عنصر Display Object بمسرح العمل أو بقائمة العرض Display List عن طريق الاكشن سكريبت
يكون بواسطة أمرين فقط أولا انشاء عنصر موفي كليب أي مقطع فلم فارغ بدون محتوى كما يلي :

var mc:MovieClip = new MovieClip();


وهذا السطر يسجل في ذاكرة البرنامج لكن لا يتم عرض هذا الموفي كليب في المسرح الا بواسطة الدالة (addChild(mc ليصبح الكود


var mc:MovieClip = new MovieClip();
addChild(mc);



نفترض أن هذا الموفي كليب في شكل مربع على المسرح اذن نستطيع أن نضيف فيه كائنات أخرى Display Object باعتباره أيضا Display Object Container
كما يمكن أن نضعه هو بنفسه داخل Display Object Containerآخر طبعا بواسطة الاكشن سكريبت .

الوظيفة : () addChildAt


تمكننا هاته الدالة من إضافة عناصر الى مسرح العمل وتستقبل معاملين بين الاقواس الأول اسم العنصر والثاني رقم ترتيبه ويبدأ من الصفر =
افتح مشروع جديد اضف مربع احمر وحوله الى موفي كليب ثم اضف مربع ثاني ازرق وحوله الى موفي كليب اسحب الان المربع الأزرق فوق الأحمر
ستلاحظ أنه يمر فوق الأحمر وعند سحبك للمربع الأحمر فوق الأزرق ستلاحظ أنه يمر أسفله وبالتالي الدالة المذكورة تمكنك من ترتيب ظهور
العناصر بالمسرح عن طريق اسم العنصر ورقم ترتيبه وهوالاندكس index ويبدأ من الصفر وينتهي بعدد العناصر المدرجة بالمسرح
(addChildAt(name of Child , index



 حذفعناصر من قائمة العرضRemoving Objects from the Display List



طريقة حذف أي عنصر Display Objectمن مسرح العمل تشبه تماما طريقة إضافة عنصر معين وتكون عن طريق الدالة (removeChild(name ولاحظ
أخي الكريم أن هاته الدالة تمكننا من حذف العنصربادراج اسمه بين القوسين أما الدالة (removeChildAt(0 تمكننا من حذف عنصر بترتيب محدد في قائمة العرض
أو مسرح العمل ولاحظ هنا بين القوسين رقم 0 يعني حذف أول عنصر موجود ويأخذ افتراضيا رقم صفر 0 وعندتغيير رقم 0 برقم 1 سيتم حذف
العنصر الذي يليه في الترتيب وهكذا الى اخر عدد العناصر .


 كيفية التعامل وتحديد العناصر بمسرح العمل أو بقائمة العرض :



لمزيد التحكم أكثر في العناصر بمسرح العمل من حيث معرفة ترتيبها وأسماءها والتعامل معها يمكن استغلال الدالة
() getChildAt وبين القوسين نحدد رقم العنصر الابن يعني ترتيبه

var obj:DisplayObject = getChildAt(0);

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

var obj:DisplayObject = getChildByName("Name");

اذا رغبت في معرفة ترتيب أحد العناصر في قائمة العرض ولديك اسمه فقط يمكن استغلال الدالة () getChildIndexواليك طريقة كتابة الكود لمعرفة رقم أو ترتيب العنصر .

var obj:DisplayObject = getChildByName("circle");
var objindex:int = getChildIndex(obj);


الدالة()swapChildren :


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

swapChildren(mc1,mc2);

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

swapChildrenAt(0, 1) ;

رقم 0 يمثل العنصر أو الكائن الأول بقائمة العرض ورقم 1 يمثل الكائن الذي يليه في الظهور أو الترتيب
أرجو أخي الكريم أن تكون الفكرة قد وصلت اليك في كيفية التعامل مع العناصر ضمن قائمة العرض Display List






بالتوفيق للجميع


http://www.abc4web.net/upload/images2/wcofafsmm21ires.png

أبو يوسف
25-03-2014, 03:41 PM
جزاك الله خيرا أخانا عزيز على جهودك الطيبة

:abc_152:

أبو فارس
26-03-2014, 02:36 PM
بوركت جهودك المتميزة .

موفق بإذن الله ... لك مني أجمل تحية . :abc_152:

كريم جودي
28-03-2014, 12:38 AM
جزاك الله خيرا أخانا عزيز على جهودك الطيبة

الحارث بن فيصل
28-03-2014, 11:51 AM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

خادم المسلمين
03-07-2015, 12:17 AM
والله موضوع يستح كل تقدير واحترام
فعلا معلومات مهمة جدا لو تأسس عليها دارس الفلاش لوفرت عليه الكثير

abohmam
03-07-2015, 01:36 AM
جزاك الله خيرا أخى الفاضل عزيز

ماشاء الله درس رائع ومفيد :abc_022:

بارك الله فيك وفى جهودك النافعة

تقبل الله منا ومنك صالح الأعمال

السعيدالمكي
01-03-2016, 10:55 AM
جزاك الله خيرا اخانا وبارك الله فيك