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

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

شرح الأكشن سكربت 3 الجزء الأول أساسيات أكشن سكربت 3

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

  • شرح الأكشن سكربت 3 الجزء الأول أساسيات أكشن سكربت 3

    السلام عليكم و رحمة الله و بركاته

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

    هذه الدورة منقولة من أحد المدونات بناء على نصيحة من الأخ " خادم المسلمين " لفائدتها

    تعلم AS3 -جزء1- الدرس 1 [مقدمة]



    ________________________

    مقدمة:

    سنة 1996 بدأت المغامرة في عالم الفلاش عندما قامت macromedia اشتراء شركة futureWave صاحبة برنامج خاص بالنيمشين اسمه Future Splash Animator
    الذي كان يملك نفس قاعدة الفلاش إلا انه في ذلك الوقت لم يكن فيه أي لغة برمجية فلقد كان يستعمل للانميشن فقط.





    قامت macromedia بتسميته Flash 1.0 سنة 1996,و انتظرنا الى غاية 1999 أين عرفنا مصطلح البرمجة في الفلاش مع Flash4.0
    في ذلك الوقت ال documentation لم تكن تتحدث عن لغة الاكشن سكربت و لكن فقط عن الاكشن التي بفضلها يمكننا اضافة بعض السلوكات المتقدمة في الأزرار و مختلف المحتويات الجرافيكية
    و هنا بدأ استخدامه في مجالات متعددة أين أصبحنا نجده في العديد من المنتديات و أنظمة اخرى.


    سنة 2001 ظهرت لغة الأكشن سكربت أخيرا معflash 5. . الذي أخذ يتطور نظرا لكثرة الطلبات من مستخدميه لكي يصبح أكثر سهولة و تنظيما
    Macromedia طورت لغة جديدة سنة 2003 مع برنامج flash MX 2004 اسمه الاكشن سكربت 2.
    هذه النسخة تجيب على تطلعات المبرمجين نظرا لسهولتها و الكثير من المزايا التي تقدمها.
    Macromedia تتطور مع مرور الوقت و ها هو الاكشن سكربت 3 يظهر و هو أخر نسخة في الوقت الحالي بعدما قاموا بصناعة برنامجهم الجديد Flex ..

    سنتين بعد ظهور هذه اللغة قامت شركة العملاقة Adobe بشراء macromedia و هنا الاكشن سكربت 3 يبدأ أيامه مع برنامج Flash CS3


    1.أشياء تجعلك تبرمج ب الأشكن سكربت 3 :


    - سرعة تشغيل الاكواد أسرع ب 10x مرات سرعة النسخ السابقة .
    - الاكشن سكربت 3 يقدم امكانيات لا تقارن مع النسخ السابقة.
    - هذه اللغة تمكنك من برمجة محتويات فلاشية في برنامج flash, flex, AIR قد أتكلم لاحقا عن هذه الفريموركات.
    - لا يحتاج منك تعلم لغات oriented object سابقة أخرى .
    - تعلمه و استعماله أسهل من لغات من نفس النوع مثل الجافا أوC# اوC++
    - المبرمجون بالنسخ السابقة سيكونون سعداء باكتشافهم جديد هذه اللغة و التنظيم الجديد الخاص بـ API .


    2.البرامج الضرورية:

    للبرمجة بلغة فلاش هناك العديد من الادوات التي تمكننا من هذا:
    Flash cs3 (أو نسخة أحدث منها)
    Flex Builder
    Eclipse (SDK Flex And Air)


    اللغة وAPI

    الاكشن سكربت 3 يحتوي على الكثير من الاشياء الجديدة التي سنتكلم عنها في هذه السلسة من الدروس,في هذا الدرس الاول سنكتشف بعضا منها و بعض السلوكيات الجديدة و المهمة لكل مبرمج.

    ماذا يحتوي الأكشن سكربت 3 [AS3] :

    عموم الاكشن سكربت 3 يحتوي على شيئين اساسين و هما
    لغة البرمجة(القلب): و هي لغى الاكشن سكربت المعروفة في النسخ السابقة و التي أساسها في البداية ECMAScrtipt .
    API الخاص بقارئ الفلاش:و هي تخص قارئ الفلاش فكل كلاس نقوم باستدعائها لاستخدامها هي جزء من api لقارئ الفلاش و ليس لقلب لغة الاكشن سكربت.





    عكس اللغات السابقة,نلاحظ ان مختلفوظائف قارئ الفلاش مخزنة في packages خاصة.


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

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

    ماذا سنتعلم في هذه الدورة؟

    اليكم فيديو

    https://www.youtube.com/watch?v=jFql7Q8snDc

  • #2
    تعلم as3 -جزء1- الدرس 1.2 [المتغيرات]

    السلام عليكم و رحمة الله و بركاته

    تعلم as3 -جزء1- الدرس 1.2 [المتغيرات]


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

    التي سنتعلم فيها كيفية صنع برامج فلاش بمختلف أنواعها


    ما معنى البرمجة؟

    برمجة تعني كتابة تعليمات و أوامر يقوم الحاسوب بتنفيذها..
    أجهزتنا مليئة بالبرامج ف notepad برنامج
    الالة الحاسبة برنامج
    الالعاب برامج

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

    ما معنى التعليمات؟ و كيف يتم تنفيذها من طرف الحاسوب؟

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

    - نضع قليلا من الزيت في المقلاة
    - نتركها تسخن
    - نقوم بغسل البيض
    - لما تسخن الزيت قليلا نكسر البيض
    - نضعه داخل المقلاة
    - نضع قليلا من الملح
    ... الخ الخ

    وضع الزيت في المقلاة , غسل البيض ..الخ فهذه هي التعليمات (instructions بالفرنسية)
    و تنفذ بشكل تسلسلي من الاعلى الى الاسفل ,, واحدة بواحدة
    ____________________________

    من بين أهم الأشياء في البرمجة هي المتغيرات و هذا هو موضوعنا اليوم

    سنتحدث في هذا الدرس عن طريقة انشاء المتغيرات بمختلف أنواعها



    _______________________________

    1. ماذا نعني بالمتغير؟ (variable):

    لو تتذكرون الرياضيات لما كنا في المتوسطة, فانكم حتما ستتذكرون هذا المصطلح -المتغير- و هم عبارة عن أحرف او رموز مثل أ ب ج أو a b c .. تحمل قيم عددية
    (و أشهر واحد هو "س" أو "x" )

    مثلا
    E = mc²
    أو
    ط = ك.س²

    (قانون أنشتاين للطاقة)
    حيث
    m :كتلة الجسم
    c: سرعة الضوء (ثابت)

    اذا كانت كتلة الجسم m = 20 (مثلا)
    يمكن اذن كتابة المعادلة هكذا

    E = 20 * c²

    حيث قمنا بتعويض المتغير m بقيمته

    _______________________

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

    في الرياضيات المتغير يمكنه ان يغير قيمته في أي لحظة, نفس الشئ ينطبق في البرمجة
    مثلا المتغير money نفرض ان قيمته 500 بامكانها ان تكبر او تنقص في أي وقت

    اذن بصفة عامة للمتغير اسم خاص به و قيمة يمكننا في أي وقت قراءة محتواها او تغييرها


    متى نستعمل المتغيرات؟

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

    _________________


    Syntax:

    في كل لغة برمجية هناك العديد من انواع المتغيرات و لكل واحدة منهم طريقة معينة لانشائها (syntax)

    الطريقة الصحيحة لانشاء متغير في الاكشن سكربت 3 هي :

    كود:
       var name : type = value
    حيث :

    var هي كلمة دلالية
    name: اسم المتغير و لنا الحرية في اختياره و يجب ان لا يكون كلمة دلالية و يبدأ بحرف
    type: و هو نوع المتغير (سنتكلم عن مختلف انواع المتغيرات)
    value: و هو قيمة المتغير اذا اردنا اعطاء قيمة للمتغير

    _______________________________________


    سنقوم بانشاء أول متغير لنا في لغة الاكشن سكربت 3 ببرنامج فلاش

    أولا:قم بانشاء مشروع actionscript 3 جديد
    ثم قم بالضغط على أول اطار موجود داخل ال TIMELINE





    اضغط بزر الفأرة الأيمن و اختر Action (أو اضغط F9 في لوحة المفاتيح)

    لاحظ الأكواد التالية:




    قمنا بانشاء متغير من نوع String (سلسلة حروف) و قيمتها "as3arabic"
    سلسلة الحروف دائما تكون مكتوبة بين مزدوجتين

    ________





    انشأنا متغير اسمه speed نوعه عدد حقيقي قيمته 12.6


    قم بتجريب الكود التالي:

    قم بكتابة هذا الكود ثم اضعط على CTRL + Enter أو control -> Test Scene لتجريبة




    سيكون هناك خطأ من هذا النوع:


    كود:
       1067: Implicit coercion of a value of type String to an unrelated type Number.




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

    هذا يسمى ب mode précis اي مود دقيق في الترجمة
    بامكاننا نزعه و ترك المترجم يغير اوتوماتيكيا القيم حسب نوعها الا انا هذا قد يشكل خطرا على المبرمج


    الطريقة الامثل هي

    كود:
       var speed: Number=Number("15.5");

    حيث قمنا بترجمة و تغيير قيمة "15.5" الى 15.5
    نسمي هذه العملية ب Casting و سنراها في الدرس القادم


    ملاحظة 2 :

    varmyVariable = 15;
    نلاحظ اننا لم نعطي للمتغير أي نوع لكن المترجم يقبلها و لا ينشئ رسالة خطأ لانه في الحقيقة يقوم باختيار النوع المناسب حسب القيمةالا ان هذا يستغرق بعض الوقت
    فمن الافضل دائما التصريح بالنوع

    ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــــــــــــــــ

    بعض أنواع المتغيرات Data types:

    هناك نوعين من المتغيرات

    1.المتغيرات البسيطة primitive value: طريقة انشائها مثلما سبق و ذكرنا في الاعلى
    (var name: type = value)
    و هي:
    String Number int uint Boolean


    String: متغيرات قيمتها تكون على شكل سلسة من الاحرف مثلما رأينا في الاعلى
    Number : للأعداد الحقيقية
    int : متغيرات قيمتها عدد طبيعي (سالب أو موجب)
    uint: متغيرات قيمتها عدد طبيعي موجب
    Boolean: متغيرات قيمتها صحيح أو خطأ (true,false)


    2.متغيرات معقدة: و هي ليست كالاولى و تكون طريقة انشائها كالاتي
    var name: type= new type();
    مثل:
    Object Array XML MovieClip الخ
    (سنشرحها لاحقا)

    ___________________________


    القيمة الافتراضية (Default Value ):

    اذا قمنا بانشاء متغير دون اعطائه قيمة مثل var age:int و اردنا التعرف على قيمته هل سيتشكل لنا رسالة خطأ؟ ماذا سيحدث
    فلنجرب هذا الكود


    var myBool: Boolean;
    trace(myBool);


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


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





    المتغيرات بدون نوع هي المتغيرات التي انشأناها هكذا

    كود:
     var myVar;
    فهي لا تملك أي نوع

    كود:
      trace(myVar);
    يكتب
    كود:
    Undefined

    تعليق


    • #3
      تعلم as3 -جزء1- الدرس 2.2 [المتغيرات_تطبيق]

      السلام عليكم و رحمة الله و بركاته

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

      في الدرس السابق تكلمنا باختصار عن الجانب النظري للمتغيرات تعلم AS3 -جزء1- الدرس 1.2 [المتغيرات]


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



      ____________________________________________

      1.Affectation: و نقصد بها اخذ نفس قيمة متغير اخر مثلا




      قم بكتابة هذا الكود ثم اضعط على CTRL + Enter أو control -> Test Scene لتجريبة

      والنتيجة




      أي أن b اخذ نفس قيمة المتغير a و التي هي 2
      بصفة عامة عندما نكتب
      b= a;
      تعني " سآخذ ما يوجد في المتغير a و اضعه في b"

      _____________________________________________


      2.MAX_VALUE / MIN_VALUE:

      قبل اعطاء قيمة عددية للمتغير يجب التأكد من انها تنتمي الى مجال معين و للتعرف عليه نكتب الاتي
      كود:
        trace(int.MIN_VALUE); 
         trace(int.MAX_VALUE);
      أنا يكتبلي

      -2147483648
      2147483647


      اي كل متغير من نوع int يجب ان تكون قيمته تنتمي الى هذا المجال
      نفس الشئ بخصوص Number و uint

      _____________________________


      3.Casting:

      في الدرس السابق عملنا ملاحظة لما يكون متغير من نوع Number (مثلا) و نعطيه قيمة من نوع اخر (String مثلا) يتشكل لنا رسالة خطأ
      الطريقة الصحيحة لتخلص من هذا المشكل هو

      كود:
        var myVar1: type = type(var_has_other_type);
      كمثال

      كود:
      var  a : int = 5;
      var  b : String = "2";
      a= int(b);
      trace(a);
      يكتب 2 :)

      قام المترجم بتحويل "2" الى 2 اي من سلسلة حروف الى عدد طبيعي و اعطاها الى المتغير b

      مثال 2

      كود:
      var  a:int= int("as3arabic");
        
      trace(a);
      نحاول جعل هاته السلسة من الحروف عددا طبيعيا؟


      الا ان هذا غير منطقي طبعا و النتيجة يكتب لنا NaN

      فلهذا يجب الحذر من هذا النوع من الاخطاء فالمترجم لن يشكل رسالة خطأ و انما يعطي قيمة للمتغير ! (و هي NaN)
      و عدم اكتشافها قد يسبب لكم في مشاكل و نتائج غير منتظرة

      _______________________________


      4.العمليات الحسابية :

      للقيام بعملية حسابية لعددين سنتبع نفس الطريقة التي تعلمناها في المدرسة :)


      الجمع : +
      الطرح: -
      الضرب: *
      القسمة: /
      باقي القسمة : %


      trace(5+1);

      يكتب 6


      trace(10%3);
      يكتب 1 لان باقي قسمة 10 على 3 = 1


      أمثلة


      مثال 1:

      كود:
      var integ:int  = 1+2;
      var integ2:int = -10;
      var result:Number = integ * integ2;
      result = result / 3;
      trace(result);
      - سيكتب لنا 10

      الشرح
      var integ : uint = 1+2 سيأخذ قيمة 3
      result = integ * integ2 يـأخذ قيمة 3 * (10-) و هي 30-
      result = result / 3
      يأخذ قيمة 10- لان
      (-30) / 3 = -10


      2مثال
      كود:
      varnumb: Number= 3.5;
      varnumb2: Number = 1.2; 
      varmyInt : int= numb+numb2;   // سيتم تحويل العدد الحقيقي الى عدد طبيعي اوتوماتيكيا
      trace(myInt);

      يكتب 4 بالرغم ان numb+num2= 4.7
      أي انه يظهر فقط الجزء الطبيعي للعدد الحقيقي

      _______________________________

      5. سلسلة الحروف:

      1.5.كما ذكرنا في الدرس السابقة فان سلسلة الحروف تكتب بين مزدوجتين لطباعة ما هو مكتوب تماما

      كود:
        trace("as3arabic");
      يكتب as3arabic

      و اذا لم نضع المزدوجتين؟؟

      كود:
         trace(as3arabic);

      سيظن المترجم ان هناك متغير اسمه as3arabic و اذا بحث عنه و لم يجده ستظهر رسالة الخطأ هذه


      1120: Access of undefined property startimes.

      و في حالة ما اذا وجدها ؟ سيظهر قيمتها طبعا :) كما كنا نرى سابقا

      _____________________________

      2.5:
      اذا اردنا أن نظهر المزدوجتين في الشاشة مثل هذا

      كود:
        hello "as3arabic "

      هل هذا الكود صحيح؟؟

      كود:
        trace("hello"as3arabic "");
      الجواب هو خطأ لان مع نهاية كلمة " hello" المترجم سيعتبر ان سلسلة الحروف قد انتهت !
      من اجل حل هذا المشكل هناك طريقتين و هما


      كود:
        trace("hello\"as3arabic \" ");
      أو
      كود:
        trace('Hello "as3arabic " ');
      ____________________________________

      3.5 : concatenation

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

      trace("hello"+ " as3arabic " );

      يكتب hello as3arabic أي اننا قمنا بالصاق كلمة hello مع as3arabic لتصبح كلمة واحدة تم طباعتها بواسطة الدالة trace

      مثال
      كود:
      var first:String = "Hello ";
      var sec:String = "as3arabic ";
      var year:int= 2014;
      
      trace(first +"!"+ sep + sec + year);
      سيكتب لنا

      Hello !as3arabic 2014

      __________________________


      4.5 بعض الدوال و المتغيرات المهمة في سلاسل الحروف:

      طول (أو عدد أحرف) سلسلة length:

      كود:
        
      var hello:String= "Hello as3arabic ";
        
      trace(hello.length);
      يكتب لنا 15

      تحويل الى حروف كبيرة او صغيرة:

      كود:
        var hello = "HeLLo As3aRaBiC";
        trace(hello.toLowerCase());
        trace(hello.toUpperCase());
      الاولى ستقوم بتحويل كل الحروف الى احرف صغيرة

      و الثانية الى احرف كبيرة

      __________________________


      البحث داخل سلسلة حروف (indexOf):

      كود:
       var ss:String = "hello";
        trace(ss.indexOf("e"));
        trace(ss.indexOf("a"));
      1 الاولى ستظهر 1 و تعني ان الحرف موجود في المركز
      0الترتيب يبدأ من
      h: مركزها 0
      e: 1
      l:2
      o:4

      لأن سلسلة الأحرف يمكن التعامل معها كالجدول (سنرى هذا لاحقا)
      اما الثانية فالنتيجة -1 لانه غير موجود


      __________________________________


      https://www.youtube.com/watch?v=Esc1N9hk1QU

      تعليق


      • #4
        تعلم as3 -جزء1- الدرس 3 [الدوال الشرطية]

        السلام عليكم و رحمة الله و بركاته

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



        من الجيد فهم الدروس السابقة :

        تعلم AS3 -جزء1- الدرس 1 [مقدمة]
        تعلم AS3 -جزء1- الدرس 1.2 [المتغيرات]
        تعلم AS3 -جزء1- الدرس 2.2 [المتغيرات_تطبيق]

        If statement



        _______________________________

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


        مفاهيم أساسية:

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



        _____________________________________

        الفرق بين = و == و === :

        في الدرس السابق رأينا طريقة اعطاء قيمة الى متغير عن طريق "="
        ;var a:int = 5
        أي "=" تستعمل لل affectation فقط !
        أما "==" و "===" فهي تستعمل للمقارنة!

        الفرق بينهما هو :
        فلنفرض أننا نملك متغيرين, الأول سلسلة أحرف قيمته "3.14" و الثاني عدد حقيقي قيمته 3.14
        اذا قارنا القيمتين عن طريق "==" فالمترجم سيحتسب القيمة صحيحة لانه يقوم بتحويل "3.14" الى قيمة عددية و يقارن ليجدهما متساويين
        اذا قارنا القيمتين عن طريق "===" فالمترجم سيقارن القيمتين + النوع
        و بما ان النوع مختلف فواحد Number و الاخر String ف النتيجة هي خطأ

        ____________________________________

        العوامل المنطقية (opération logique):


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

        نأخذ نفس المثال السابق

        :عددي محصور بين 0 و 10 يعني -
        عددي أكبر من 0
        عددي أصغر من 10
        تكتب على هذا الشكل:
        (عددي > 0 و عددي <10)
        بالانجليزية
        myNumber > 0 AND myNumber < 10
        في الفلاش هذه هي الروابط المنطقية الموجودة
        و تعني "لا" المنطفي : !
        و تعني "و" المنطقي :&&
        و تعني "أو" المنطقي : ||
        شرح:
        لما نقول( ألفا و بيتا) فالنتجية تكون صحيحة فقط و فقط اذا كان ألفا صحيح و بيتا صحيح
        اذا كان ألفا خطأ و النتيجة ستكون خطأ , نفس الشئ اذا كان بيتا خطأ
        لما نقول (ألفا أوبيتا) ف لكي تكون النتيجة صحيحة يكفي ان يكون إما الفا أو بينا صحيح
        لما نكتب (!الفا) فالقيمة تكون صحيحة اذا كان الفا خطأ ف "!" تعكس القيمة و عكس خطأ هو صحيح

        _________________________________

        :If ..else statement syntax

        الان سنتكلم عن طريقة كتابة الشروط في الاكشن سكربت 3

        كود:
        if(condition)
        {
                     //code1
                    //في حالة تحقق الشرط
                    // condition == true 
        }
        else
        {
               //code2
               //condition == false
        }
        تعني اذا تحقق الشر : if (condition)
        في حالة لم يتحقق يتم تنفيذ كود 2:else
        أمثلة

        كود:
        var myLife:int= 0; 
        if(myLife == 0 )
              trace('You are died');
        سيكتب لنا You are died
        لان قيمة المتغير تساوي 0 يعني الشرط محقق
        هناك ملاحظتين :
        الاولى لم نكتب لم نفتح الوسام {}
        else و الثاني لا توجد
        عدم وجود else يعني ببساطة اذا كانت القيمة مختلفة عن 0 فلا تفعل أي شئ لاننا لم نخصص لها كود
        اما بخصوص الاوسمة فهو يأخذ اول كود ياتي بعد الشرط اما الباقي فيعتبر خارج الجملة الشرطية
        مثلا

        كود:
        var myLife:int = 0;
        if(myLife == 0)
              trace("You are died");
        else
               trace("You are alive");
        trace("startimes");
        you are diedنعرف ان القيمة تساوي 0 يعني الشرط محقق يعني سيكتب لنا
        لن يتم تنفيذ كودها و هو السطر الاولelse و في هذه الحالة
        سيتم كتابتها لانها خارج الجملة startimes و هذا ما يعني ان

        ______________________________________


        طريقة أخرى لكتابة جملة شرطية ذات سطر واحد

        عوضا ان نكتب
        كود:
        if(myLife == 0)
                myLife == 100;
        else 
                myLife = myLife + 50;
        يمكننا اختصارها الى

        كود:
         MyLife = (myLife == 0)  ? 100:  myLife + 50;
        ___________________________

        If.. else IF:

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

        كود:
        if(condition)
        {
        }
        else if(condition 2)
        {
        }
        else if(c3)
        {
        }
        ..
        ...
        ..
        else
        {
        }
        مثال :

        كود:
        var myNumber:int= 1;
        
        if(myNumber <0)
               trace(myNumber +" < 0");
        
        else if (myNumber == 0)
             trace(myNumber + " == 0");
        
        elsetrace(myNumber +" >0");
        نقارن المتغير اذا كان اصغر من 0. اذا كان الشرط غير محقق نقارن اذا كان يساوي 0 . و اذا كان غير محقق فحتما هو موجب
        _____________________________________


        :SWITCH .. CASE

        تخيل اننا نملك العديد من الجمل الشرطية لنفس المتغير

        كود:
        if(c1)
        {
        }
        else if(c2)
        {
        }
        ....
        else if(condition n)
        {
        }
        سيكون الكود طويل و غير أنيق
        هي الحل حيث تبسط لنا الكود الى هذا الشكلswitch

        كود:
        switch(variable)
         {
               caseVALUE1:code1;break;
               case VALUE2: code2;break;
             //    ... case valueN: code N;break;
             default: code Default
        }
        و تقرأ هكذا
        break اذا كان المتغير يساوي القيمة 1 فنفذ الكود 1 ثم اخرج عند الوصول الى

        و الا فانه سيكمل تنفيذ الاكواد التي تأتي بعد الكود الحاليbreak يجب دائما كتابة
        أي الكود 2 و 3 .. الخ
        في حالة وجوده لأنه غير اجباري default في حالة ما اذا كان المتغير لا يساوي أي قيمة فالمترجم سينفذ الكود الموجود في مثال

        كود:
        switch(myColor)
        {
                case"red"  :    trace("My color is red");    break;
                case"blue" :   trace("My Color is blue");  break;
               case"green":   trace("My color is green"); break;
               default:             trace("Other colors");
        }

        تعليق


        • #5
          تعلم as3 -جزء1- الدرس 4 [الحلقات التكرارية]

          السلام عليكم و رحمة الله و بركاته

          مرحبا بكم في هذا الدرس الجديد من سلسلة دروس تعلم الاكشن سكربت 3
          و سنتحدث في هذا الدرس عن الحلقات التكرارية (Loops statement) بالفرنسية Les boucles




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

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

          _____________________________


          I.الحلقة التكرارية WHILE: (ما دام)

          كما سبق و ذكرنا فالحلقات التكرارية تمكننا من تكرار الاكواد عدد مراة
          قد يكون العدد منتهي (محدود , مثلا نكررها 5 مرات . 6مرات .. 100 مرة)
          و قد يكون غير محدود -الى مالا نهاية-

          كيف نقوم بتحديد العدد الذي نريده ؟

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

          مادام (شرطي صحيح) اذن نفذ هذه الاكواد

          كما ترون ف while تشبه تمام الدوال الشرطية (if ..esle) إلا ان الفرق هو ان الاكواد تنفذ بشكل متكرر الا غاية عدم تحقق الشرط الازم
          الدالة while تقوم بتجربة الشرط اذا كان محققا أم لا قبل تنفيذه

          كيف نكتبها في الأكشن سكربت 3؟ syntax:

          كود:
          while(Condition)
           }
           اكواد تنفذ اذا كان الشرط محقق// 
          {
          مثلما رأينا في if ..else فاذا لم نضع الاوسمة سيتم تنفيذ السطر الاول فقط بعد الشرط
          _______________________

          كيف تعمل الحلقة while ؟

          تعني مادام الشرط محقق: while(condition)
          }: بداية الحلقة التكرارية و من هنا سيتم تنفيذ الاكواد
          الاكواد:و هي الاكواد التي تنفذ سطرا بسطر
          { : نهاية الحلقة التكرارية و هنا نعود الى الشرط و نرى ان كان صحيحا ام لا
          اذا كان صحيح نعيد تنفيذ الاكواد مجددا
          و اذا كان خاطئا نكمل تنفيذ الاكواد التي تأتي خارج الحلقة يعني بعد وسام النهاية

          _______

          مثال:
          كود:
          var i: int = 0;
          while(i<3)
          {
                  trace("i = "+i);  
                  i = i+1;
          }

          اذا قمنا بتجربة الكود فسيظهر لنا
          i = 0
          i = 1
          i = 2

          لم يظهر 3 لأن لما كان i يساوي 3 الشرط لم يتحقق لأن 3 ليس أصغر من 3 :)

          Syntax :

          بامكاننا كتابة الكود الاتي

          ;i = i+1

          كالاتي

          i++;

          -------------------------------------------

          II. الحلقة التكرارية Do .. While:

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

          مثال

          كود:
          var nb:int = 2;
          do
          {
               trace(nb);
               nb++;
          }while(nb == 0)
          بالرغم من ان الشرط غير محقق من البداية الا انه سيكتب لنا 2

          _________________________

          III.الحلقة التكرارية FOR


          تستعمل عموما لما نكون نعلم عدد التكرارات التي نحتاجها لتنفيذ كود معين

          و تكتب على هذا الشكل

          كود:
          for(INIT,CONDITION,ACTION)
          {
           //instructions..
          }
          INIT: هنا يتم وضع المتغيرات و قيمتهم الابتدائية و بامكاننا انشاء متغيرات هنا
          CONDITION: مثلما كنا نرى في الاعلى أي نضع الشرط
          ACTION: بامكاننا وضع الكثير من الأشياء هنا لكن عموما تستعمل لزيادة او انقاص قيمة المتغير الذي نقارن به عدد مرات تنفيذ الاكواد

          مثال:
          كود:
          for(var i :int= 0;  i< 3; i++)
          {
               trace("i  = "+i);
          }
          سيظهر لنا

          i = 0
          i = 1
          i = 2
          ____________

          ماذا يحدث بالضبط؟

          خطوة بخطوة :
          1.
          var i :int= 0
          هذا أول كود ينفذ و لمرة واحدة فقط حيث تم انشاء متغير قيمته 0

          2.
          ثاني شئ نتأكد من صحة الشرط أي i<3
          اذا كان صحيحا يتم تنفيذ الاكواد و الا نخرج

          3.
          بعد الوصول الى وسام نهاية الحلقة {
          نصعد الى action و نضيف قيمة 1 الى i

          4.
          نعود مجددا الى الشرط اذا كان صحيحا ننفذ الكود و الا نخرج
          و هكذا.... الى غاية عدم تحقق الشرط

          --------------------------
          شكرا

          تعليق


          • #6
            السلام عليكم و رحمة الله و بركاته

            مرحبا بكم في هذا الدرس الجديد من سلسلة دروس تعلم الاكشن سكربت 3
            وسنتحدث في هذا الدرس عن الجداول (Arrays) بالفرنسية Les tableaux



            ______________________________________


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


            مثال:
            فلنفرض اننا نريد تخزين مجموعة أسماء..سيكون مملا و طويلا ان نستعمل الطريقة الكلاسيكية:


            كود:
            var name1:String = "name1"; 
              var name2:String = "name2"; 
              var name3:String = "name3";
              var name4:String = "name4;
              ...
            _____________________________________


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


            الجداول في الاكشن سكربت 3:


            النوع Array:

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

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


            2. لسنا مجبرين على اعطاء نوع القيم للجدول و نقصد بهذا :
            في اللغات الاخرى اذا اردنا انشاء جدول, يجب علينا ان نعطي نوع القيم (أعداد , سلاسل حرفية ..الخ) و يجب أن تكون كل قيمه من نفس النوع
            أما في الأكشن سكربت 3 فيمكننا ادخال عدة أنواع من القيم في نفس الجدول (int, uint, String, Number ..ect)

            ____________________________________

            Syntax:

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

            كود:
             var myTable : Array = VALUES;

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

            ____________________________________

            طرق انشاء الجداول و Initialisation :

            I.جداول أحادية الابعاد:




            هناك عدة طرق مختلفة لانشاء جدول و اعطائه قيمته الاولي (initialisation):

            كود:
              0.var myArray : Array = [];

            قمنا بانشاء جدول فارغ (طوله 0)


            كود:
             1.var myArray: Array = new Array();
            نفس ما قمنا به في الاعلى لكن بكتابة مختلفة, يعني أنشأنا جدولا فارغا.

            كود:
             2. var myArray: Array = new Array(7);
            هذا يعني أننا قمنا بانشاء جدول طوله 7 (نقصد بالطول عدد الخانات التي يحتويها حاليا)



            كود:
             3.var myArray: Array = new Array("hello"," as3arabic ","programmers");
            و هذا يعني أننا قمنا بانشاء جدول يملك 3 قيم كما هو مكتوب




            كود:
             4.var myArray: Array = ["Hello" , " as3arabic ", "programmers"];

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

            ________________________________

            الدالة trace:


            هذه الدالة ستطبع لنا "كل" قيم الجدول

            كود:
            var myArray: Array = ["Hello" , " as3arabic ", "programmers"];
              var myArray2:Array = [1,2,3,4,10];
              trace("Array1 = "+myArray);
              trace("Array2 = "+myArray2);

            ستكتب
            كود:
            Array1 = Hello as3arabic programmers
              
              Array2 = 0 1 2 3 4 10
            ________________________________

            عناصر الجدول (elements):

            ونقصد بالعنصر القيمة المحتواة في الجدول
            نعلم ان الجدول قد يحتوي على الكثير من القيم او العناصر
            و لكن يجب استعمال كل واحد منها على حدى
            و هنا نتحدث عن ما يسمى بالمؤشر أو بالانجليزية index او بالفرنسية indice


            index:
            و هو رقم الخانة التي تحتوي على العنصر في الجدول و قيمته تتراوح بين 0 و (طول الجدول-1)
            يتم كتابة المؤشر بين []


            سنشرحه في مثال
            varmyArray:Array = [15,16,17];


            هذا الجدول يتكون من ثلاث قيم حيث
            مؤشر العدد 15 هو 0
            كود:
            trace(myArray[0]); //سيكتب 15
              
            
              مؤشر العدد 16 هو 1
              trace(myArray[1]); // سيكتب 16
              
            
              مؤشر العدد 17 هو2
              trace(myArray[2]); //17 سيكتب
            كما نرى الخانة الاولى في الجدول رقمها 0 و ليس 1 و هذا مهم



            _________________________________

            مثال اخر:


            كود:
            var myArray : Array = new Array(3); // أنشأنا جدول طوله 3 لكن بدون قيم
              myArray[0] = 10; // الخانة الاولى ستحمل القيمة 10
              myArray[1] = 20;
              myArray[2] = myArray[0] + myArray[1] + 10;
              
            
              trace(myArray[2]);

            ماذا سيظهر؟ دون تجريب الكود (الاجابة في التعليقات)؟؟

            ____________________________


            بعض خصائص النوع جداول Array:


            1.طول الجدول length:


            لمعرفة كم عدد القيم التي يحتويها الجدول نستعمل الخاصية length


            كود:
             var  myArray : Array = new Array(10);
              trace(myArray.length);   // 10 سيكتب
            _____________________________


            2.اضافة خانة جديدة الى جدولunshift / push:


            أ.push:
            فلنفرض اننا قمنا بانشاء جدول من 3 قيم
            ثم أردنا اضافة خانة جديدة أي قيمة جديدة فياخر الجدول علما ان الجدول مملوء
            يجب علينا استعمال الخاصية push
            ___________________


            كود:
              var  myArray:Array = [10,20,30];
              trace( myArray.length);  //3 سيكتب  
              
            
              myArray.push(40);
              
              trace( myArray.length); //4 سيكتب
              trace(myArray[3]); // سيكتب  40 أي ان الخانة الأخيرة تحتوي على 40
            ___________________

            ب. unshift

            مثل push تماما إلا انها تضيف القيمة في أول خانة في الجدول يعني ال index 0

            _________________________________

            3.حذف قيمة من الجدول shift / pop:

            مثلما رأينا في الأعلى ف shift و popتعمل بنفس المبدأ و هو
            pop: حذف خانة من اخر الجدول
            shift: حذف خانة من أول الجدول

            ____________________________________


            هل يمكننا اضافة أو حذف قيم من index نحن نختاره؟


            و هنا سنتكلم عن الخاصية splice :


            كود:
              splice(i , j ,values);

            حيث
            i: هو الاندكس الذي نريد أن نضيف أو نحذف
            j:عدد القيم التي نريد حذفها انطلاقا من الاندكس i
            values: القيم التي نريد اضافتها قد تكون واحدة او كثيرة
            مثلا
            كود:
             splice(1,1,20,50,30);
            تعني اذهب الى الخانة الثانية (لأن الترتيب يبدأ من الصفر) ثم احذفها ثم قم باضافة القيم 20 50 30


            1.للاضافة:
            سننشئ جدول من 3 قيم و سنقوم باضافة قيمة في الخانة الثالثة


            كود:
            var myArray: Array = [10,20,40];
              myArray.splice(2,0,30);
               trace(myArray); 
              // 10 20 30 40
            طبعا كما ترون (splice(2,0,30 لاننا لا نريد حذف اي قيمة لكن فقط للاضافة

            2. للحذف :

            كود:
            var myArray: Array = [10,20,40];
              myArray.splice(1,2);
               trace(myArray);  // 10
            _________________________________

            تمارين
            1.
            نريد انشاء جدول يحتوي على 50 خانة فارغة
            ثم نقوم بملئ كل خانة برقم الاندكس الموجودة فيه
            مثلا الخانة 0 قيمتها 0 .. الخانة 40 قيمتها 40

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

            .2
            كود:
            var myArray: Array = ["Hello ","as3arabic"," 's "," developer","!"]; 
              myArray.pop();
              myArray.splice(2,1);
              myArray.shift();
              trace(myArray);

            دون تجريب الكود أعطينا ماذا ستيطبع في الشاشة؟

            الاجابة في التعليقات
            _________________________________


            II.السلاسل الحرفية :

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

            مثلا
            var myName:String = "as3arabic";


            في الحقيقة السلاسل الحرفية هي مثل الجدول! طوله هو عدد الأحرف
            فمثلا "as3arabic" سيتم تقسيمها الى 9 خانات
            الخانة الاولى (index 0) قيمتها a
            الثانية قيمتها s
            للتأكد جرّب الكود التالي


            كود:
            var myName : String = "as3arabic";
              
              for(var i:int = 0; i<myName.length ;i++)
              {
                   trace(i + " = "+ myName.charAt(i) );
              }
            النتيجة
            0 = a
            1 = s
            2 = 3
            ..
            8 = c
            _________

            قمنا بانشاء متغير من نوع سلسلة حرفية
            ثم قمنا باظهار محتوى كل خانة من خاناته
            طبعا مثلما نفعل مع الجداول فلاظهار خانة يجب كتابة رقم الاندكس غير اننا هنا لا نستعمل []
            بل نكتب اسم المتغير متبوع بالكلمة (charAt(index حيث نضع رقم الخانة مكان index
            عوض ان نعرضها واحدة بواحدة


            كود:
            myName.charAt(0)
             myName.charAt(1);
             
             myName.charAt(8)
            قمنا بانشاء حلقة تكرارية تبدأ من 0 (لان اول خانة رقمها 0 )

            الى غاية طول الحلقة myName.length

            (طبعا يمكن ان نكتب 9 عوض myName.length لكن المشكلة هي لو قمنا بتغيير قيمة myName فالحلقة دائما تدور 9 مراة دائما فمثلا

            myName = "as3";
            لما يصل المتغير i الى قيمة 3
            myName.charAt(3)

            سنتفاجئ برسالة خطأ لان طول المتغير 3 يعني الاندكسات الممكنة هي 0,1,2

            لهذا من الافضل ان نترك myName.length فهي أكثر ديناميكية )

            (سنتكلم لاحقا عن الكلاس String و مخلف خصائصها في الجزاء الثاني )

            __________________________________

            III. المصفوفات و الجداول متعددة الأبعاد:

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


            لا يوجد فرق كبير في كيفية الوصول الى قيمة العناصر او تغييرها .
            هذا مثال عن جدول ثنائي الابعاد 2D و التي تسمى بالمصفوفات:





            سنتعمق في المصفوفات :


            في الجداول أحادية الابعاد تعلمنا عن index و قلنا انه مكان تواجد عنصر ما (element) الذي يحتوي على قيمة
            و كنا نصل اليه بهذه الطريقة


            كود:
            arrayName[index]
            أما المصفوفات تملك أسطر (rows بالانجيليزية, lignes بالفرنسية)
            و أعمدة (columns)


            للوصول الى العنصر نكتب التالي

            كود:
             matrixName[row][column]
            حيث
            row: رقم السطر و يبدأ من الصفر
            column: رقم العمود و يبدأ من الصفر




            لدينا هذا الكود:

            كود:
            var myArray: Array = [];
             myArray[ 0 ] = [ "A", "B", "C" ];
             myArray[ 1 ] = [ "D", "E", "F" ];
             myArray[ 3 ] = [ "G", "H", "I" ];
             trace( myArray[ 1 ][ 2 ] ); //F

            السطر الاول(رقم 0 ) يحتوي على جدول طوله 3 يحتوي على القيم A B C
            السطر الثاني (رقم 1) يحتوي على جدول طوله 3 يحتوي على القيم D E F
            السطر الثالث(رقم 2) يحتوي على جدول طوله 3 يحتوي على القيم G H I

            نريد معرفة محتوى السطر رقم 1 (ابتداء من الصفر ) يعني السطر الثاني
            و العمود رقم 2


            تعليق


            • #7
              السلام عليكم و رحمة الله و بركاته
              مرحبا بكم في هذا الدرس الجديد من سلسلة دروس تعلم الاكشن سكربت 3
              و سنتحدث في هذا الدرس عن الدوال Functions

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

              الدوال تمكننا من كتابة برامج مصغرة نقوم باستدعائها عند الحاجة

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

              ___________________________________

              مفاهيم أساسية:

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

              مكونات الدالة:

              تتكون الدالة من ثلاث أشياء أساسية و هي
              المداخل (Input): و هي مجموعات متغيرات تدعى parameters (و بامكاننا عدم أي واحدة) نقوم بالعمل بها داخل الدالة للقيام بمهمة معين
              العمليات او الحسابات : و هي الاكواد التي يتم تنفيذها و هي مكتوبة في قلب الدالة
              نوع الدالة : و هو نوع النتيجة او المخرج الذي يجب ان يرجعه لنا الدالة بعد نهاية التنفيد
              المخرج (output): و هي القيمة النهائية التي ستحتويها الدالة

              تمام مثلما كنا نرى في المدرسة
              مثلا في الرياضيات
              f(x) = x²;
              هذه الدالة مربع
              المدخل هو x و المخرج (او النتيجة) هو مربع المدخل




              طريقة كتابة دالة في الاكشن سكربت 3 (Syntax):

              كود:
              f unction   name_of_function(parameters):type
              {
                      //codes
                     return  OUTPUT;
              }
              حيث

              function: كلمة دلالية تكبت قبل انشاء دالة

              name_of_function: و هو اسم الدالة و يكون اختياري
              من الافضل ان يكون حسب وظيفة الدالة و يمنع ان يكون كلمة دلالة و يجب أن يبدأ بحرف و ليس برقم او شئ اخر

              parameters: و هو المدخل, يمكن ان يكون 0 (اي بدون مدخل) , أو مجموعة مداخل

              type: و هو نوع المخرج الذي تعطينا الدالة

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


              سأعطي مثال الدالة مربع التي ذكرناها سابقا و نقوم باستدعاها
              ستكتب بهذا الشكل

              كود:
              f unction power2( x:int ) :int
              {
                   var result:int = x*x;
                  return result;
              }
              
              var myNumber:int= 10;
              var myResult:int;
              
              myResult = power2(myNumber); // استدعاء الدالة
              trace(myResult);
              //يكتب 100
              و هذا يعني ان المتغيرmyResult أخذ القيمة التي خرجت بها الدالة power2
              قم بتجريب هذا الكود معطيا قيما أخرى للمتغير myNumber

              ______________________________________


              و اذا اردت كتابة دالة لا ترجع لنا أي قيمة ؟؟ مثلا دالة تطبع لنا hello as3arabic

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

              مثال

              ___________1___________
              كود:
               function salutation():void
              }
                  trace("Hello as3arabic");
              {
              
              salutation();
               ستكتب لنا hello as3arabic//

              كما نرى فالدالة salutation لا تحتوي على parameters بما اننا لا نحتاجها
              و هي لا تملك return فنحن لا نحتاج ان ترجع لنا اي قيمة

              ____________2___________
              كود:
              function  alert(txt: String):void
              {
                   trace("Alert: "+txt);
              }
              
              alert("Attention virus!");
               ستكتب !Alert: Attention virus //
              ______________________________________


              المتغيرات المحلية Local variables:

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

              مثلا
              كود:
              function Exemple():void
              {
                    var  Name:String = "Chafik";
                    trace(Name);
              }
              
              Exemple();
              trace(Name);
              قمنا بانشاء الدالة Exemple و داخلها قمنا بانشاء متغير Name ثم استدعينا الدالة
              و قمنا بطباعة المتغير Name
              الا أن هذا يتسبب بحدوث خطأ لأن المترجم لم يجد المتغير Name لانه يتم حذفه بعد الخروج من الدالة

              ___________________________________


              parameters اختيارية (Optional) :

              لما نقوم بانشاء دالة ما
              ثم نقوم باستدعائها
              علينا باحترام مكان تواجد ال parameters أي ترتيبهم و عددهم
              فاذا جربنا هذا الكود
              كود:
              function test(p1:int):void
              {
                  trace(p1);
              }
              test();
              قمنا بانشاء الدالة test ذات مدخل واحد و هو p1
              لكن عند استدعائها لم نضع أي مدخل
              و هذا سيشكل رسالة خطـأ
              اذن p1 هو مدخل اجباري

              _______________________

              أحيانا نريد ان نضع مداخل اختيارية اذا قمنا باستدعاء الدالة دون وضعهم ستشتغل بقيمة ابتدائية من اختيارينا
              مثلا
              اريد ان استدعي دالة تكتب لي
              "Hello Chafik" اذا اعطيتها اسمي كمدخل
              و في حالة لم اعطيها اسمي تكتبلي
              "Hello as3arabic"

              اليكم الطريقة

              كود:
              f unction salutation(msg:String= "as3arabic"):void
              {
                 trace("Hello "+msg);
              }
              
              salutation("Chafik");  
              salutation();
              الاولى ستظهر Chafik أما الثانية فستظهر القيمة الابتدائية و هي as3arabic
              اذن msg هومدخل اختياري


              ملاحظة مهمة :يجب دائما وضع المداخل الاجبارية قبل الاختيارية
              مثلا

              كود:
              function exemple(p1:int, p2:int , p3:int = 1, p5:int = 5)
              _________________________________

              تمارين

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

              2. اكتب دالة ترجع لنا أصغر قيمة موجودة داخل جدول

              3.اكتب دالة لحساب القاسم المشترك الاكبر لعددين PGCD
              __________________

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

              تعليق


              • #8
                الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

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

                بارك الله فيكم جميعا

                تعليق


                • #9
                  جزاك الله خيرا

                  تعليق


                  • #10
                    شـكــ وبارك الله فيك ـــرا لك ...

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

                    تعليق


                    • #11
                      جزاك الله خيرا

                      تعليق


                      • #12
                        :teslam:

                        جهد كبير وعمل رائع

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

                        تعليق


                        • #13
                          جزاك الله خيرا الى يوم الدين
                          موفق بإذن الله ... لك مني أجمل تحية .

                          تعليق


                          • #14
                            هل هناك ملف pdf لهذا الدرس اذا امكن

                            تعليق


                            • #15
                              شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

                              تعليق

                              مواضيع تهمك

                              تقليص

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