السلام عليكم و رحمة الله و بركاته
مرحبا بكم في هذا الدرس الجديد من سلسلة دروس تعلم الاكشن سكربت 3 و سنعطي في هذا درس بعض الامثلة التطبيقية و التمارين
في الدرس السابق تكلمنا باختصار عن الجانب النظري للمتغيرات
في هذا الدرس ان شاء سيكون تطبيق لما تعلمناه سابقا
1.Affectation: و نقصد بها اخذ نفس قيمة متغير اخر مثلا
var a:int = 2;
b= a ;
trace(b);
سيكتب 2
أي أن b اخذ نفس قيمة المتغير aو التي هي 2
بصفة عامة عندما نكتب
b= a;
تعني " سآخذ ما يوجد في المتغير a و اضعه في b"
2.MAX_VALUE / MIN_VALUE:
قبل اعطاء قيمة عددية للمتغير يجب التأكد من انها تنتمي الى مجال معين و للتعرف عليه نكتب الاتي
trace(int.MIN_VALUE);
trace(int.MAX_VALUE);
أنا يكتبلي
اي كل متغير من نوعintيجب ان تكون قيمته تنتمي الى هذا المجال
نفس الشئ بخصوصNumberوuint
3.Casting:
في الدرس السابق عملنا ملاحظة لما يكون متغير من نوع Number (مثلا) و نعطيه قيمة من نوع اخر (String مثلا) يتشكل لنا رسالة خطأ
الطريقة الصحيحة لتخلص من هذا المشكل هو
varmyVar1:Type=type(var_has_other_type);
كمثال
vara:int = 5;
varb:String = "2";
a=int(b);
trace(a);
يكتب 2 :)
قام المترجم بتحويل "2" الى 2 اي من سلسلة حروف الى عدد طبيعي و اعطاها الى المتغير b
مثال 2
var a:int= int("cerine_dz");
trace(a);
نحاول جعل هاته السلسة من الحروف عددا طبيعيا؟
الا ان هذا غير منطقي طبعا و النتيجة يكتب لناNaN
فلهذا يجب الحذر من هذا النوع من الاخطاء فالمترجم لن يشكل رسالة خطأ و انما يعطي قيمة للمتغير ! (و هي NaN)
و عدم اكتشافها قد يسبب لكم في مشاكل و نتائج غير منتظرة
4.العمليات الحسابية :
للقيام بعملية حسابية لعددين سنتبع نفس الطريقة التي تعلمناها في المدرسة :)
الجمع : +
الطرح: -
الضرب: *
القسمة: /
باقي القسمة : %
trace(10%3);
يكتب 1 لان باقي قسمة 10 على 3 = 1
أمثلة
مثال 1:
var integ:= 1+2;
var integ2:int = -10;
var result:Number = integ * integ2;
result = result / 3;
trace(result);
سيكتب لنا -10
الشرح
integ:uint = 1+2 سيأخذ قيمة 3
result = integ * integ2 يـأخذ قيمة 3 * (-10) و هي -30
result = result / 3
يأخذ قيمة -10 لان
(-30) / 3 = -10
2مثال
var numb:Number = 3.5;
var numb2:Number = 1.2;
var myInt :int = numb+numb2; // سيتم تحويل العدد الحقيقي الى عدد طبيعي اوتوماتيكيا
trace(myInt);
يكتب 4 بالرغم ان numb+num2= 4.7
أي انه يظهر فقط الجزء الطبيعي للعدد الحقيقي
5. سلسلة الحروف:
1.5.كما ذكرنا في الدرس السابقة فان سلسلة الحروف تكتب بين مزدوجتين لطباعة ما هو مكتوب تماما
trace("startimes");
يكتب startimes
و اذا لم نضع المزدوجتين؟؟
trace(startimes);
سيظن المترجم ان هناك متغير اسمه startimes و اذا بحث عنه و لم يجده ستظهر رسالة الخطأ هذه
1120: Access of undefined property startimes.
و في حالة ما اذا وجدها ؟ سيظهر قيمتها طبعا :) كما كنا نرى سابقا
_____________________________
2.5:
اذا اردنا أن نظهر المزدوجتين في الشاشة مثل هذا
hello "startimes"
هل هذا الكود صحيح؟؟
trace("hello"startimes"");
الجواب هو خطأ لان مع نهاية كلمة " hello" المترجم سيعبر ان سلسلة الحروف قد انتهت !
من اجل حل هذا المشكل هناك طريقتين و هما
trace("hello\"startimes\" ");
or
trace('Hello "startimes" ');
____________________________________
3.5 : concatenation
و نقصد بها الصاق كلمتين لتصبح كلمة واحدة و للقيام بهذا نستعمل ببساطة "+" و كأننا نضيف الكلمة لكلمة اخرى
trace("hello"+ " startimes" );
يكتب hello startimes أي اننا قمنا بالصاق كلمة hello مع startimes لتصبح كلمة واحدة تم طباعتها بواسطة الدالة trace
مثال
var first:String = "Hello ";
var sec:String = "Startimes ";
var year:int= 2014;
trace(first +"!"+ sep + sec + year);
سيكتب لنا
Hello !Startimes 2014
__________________________
4.5 بعض الدوال و المتغيرات المهمة في سلاسل الحروف:
طول (أو عدد أحرف) سلسلة: length
var hello:String= "Hello startimes";
trace(hello.length);
يكتب لنا 15
تحويل الى حروف كبيرة او صغيرة:
var hello = "HeLLo StArTiMeS";
trace(hello.toLowerCase());
trace(hello.toUpperCase());
الاولى ستقوم بتحويل كل الحروف الى احرف صغيرة
و الثانية الى احرف كبيرة
____________________________
البحث داخل سلسلة حروف:
var ss:String = "hello";
trace(ss.indexOf("e"));
trace(ss.indexOf("a"));
1 الاولى ستظهر 1 و تعني ان الحرف موجود في المركز
0الترتيب يبدأ من
h: مركزها 0
e: 1
l:2
o:4
لأن سلسلة الأحرف يمكن التعامل معها كالجدول (سنرى هذا لاحقا)
اما الثانية فالنتيجة -1 لانه غير موجود
سأكتفي
بهذا لان هذا الموضوع فعلا كبير المهم ان نتعلم الاساسيات اما التعمق اكثر
فهذا يتطلب مجهوداتكم انتم ايضا و لكن سيكون سهلا جدا ان شاء الله بعد فهم
هذه السلسلة
لكن من لديه أسئلة فليطرحها