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

مشاهدة النسخة كاملة : AS3: أدوات الشرط Switch & I


خادم المسلمين
30-05-2014, 02:30 PM
بسم الله الرحمن الرحيم

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


الأمر switch:
في السابق قمنا بشرح الأحداث وتطرقنا إلى الأحداث المرتبطة بـ لوحه المفاتيح من خلال المثال التالي:

// import Sprite & KeyboardEvent Class
import flash.display.Sprite;
import flash.events.KeyboardEvent;

// create Rectangel object in the stage
var listener:Sprite = new Sprite();
listener.graphics.beginFill(0xCC9900, 1);
listener.graphics.drawRect(30, 30, 100, 50);
listener.graphics.endFill();
addChild(listener);

// add event listener to the object
stage.addEventListener(KeyboardEvent.KEY_DOWN, moveRect);

// functions be called execute when the event is received to move the Rectangle
function moveRect(evt:KeyboardEvent):void {
switch (evt.keyCode) {
case Kayboard.LEFT :
listener.x -= 5;
break;
case Keyboard.UP :
listener.y -= 5;
break;
case Keyboard.RIGHT :
listener.x += 5;
break;
case Keyboard.DOWN :
listener.y += 5;
break;
}
}


في هذا الأمر هناك قمنا باستخدام أحد أدوات الشرط وهو الأمر switch وذلك لكي نحدد شيء معين بناءاً على حركه المستخدم. في الأمر السابق يقوم الأمر switch بمقارنه رمز زر الكيبورد الذي يتم الضغط عليه من قبل المستخدم مع القيمة المستخدمة في كل حاله case في البداية سوف يقوم يتحقق من الشرط evt.keyCode والموجود في الأمر switch بين القوسين ثم ينتقل إلى الحالة الأولى وهي case Keyboard.LEFT ليقارنها مع الشرط هل يتفق رمز الزر الذي قام بالضغط عليه المستخدم مع رمز السهم الأيسر Keyboard.LEFT إذا أتفق الرمزان في هذه الحالة سوف ينفذ الأمر listener.x -= 5; وهي تقوم بتحريك المربع جهة اليسار بعدها ذلك يخرج من الشرط مستخدماً الأمر break; لأن في هذه الحالة تحقق الشرط ليس هناك حاجة لتنفيذ أو التحقق من باقي الحالات. ولكن إن لم يجد البرنامج الأمر break; في هذه الحالة سوف يقوم بتنفيذ الأمر التالي مباشرة دون التحقق من الحالة Keyboard.UP وعليه سوف ينفذ الأمر listener.y -=5; ويحرك المربع لأعلى إلى أن يصادف الأمر break; ليخرج من الشرط. في الأمر السابق تحققنا من ما إذا كان المستخدم سوف يضغط على أحد الأسهم أم لا فقط ولكن ماذا لو أنني كنت أريد أن يعرض رساله معينة في نافذة المخرجات Output في حالة الضغط على أي زر آخر من أزرار الكيبورد هنا يأتي دور الأمر default وهو يقوم بتنفيذ بعض الأوامر في حاله عدم تحقق أي من الحالات السابقة ويمكن إعادة كتابة الدالة السابقة بإضافة هذا الأمر بالشكل التالي:

// functions be called execute when the event is received to move the Rectangle
function moveRect(evt:KeyboardEvent):void {
switch (evt.keyCode) {
case Kayboard.LEFT :
listener.x -= 5;
break;
case Keyboard.UP :
listener.y -= 5;
break;
case Keyboard.RIGHT :
listener.x += 5;
break;
case Keyboard.DOWN :
listener.y += 5;
break;
defualt :
trace(“a different key was pressed”); break;
}
}


الأمر if:
هناك أداة أخرى من أدوات الشرط وهي if وهي تقوم بنفس عمل أداة الشرط السابقة ولكن مع اختلاف الطريقة ولكن كتابة الدالة السابقة باستخدام if بالشكل التالي:

// functions be called execute when the event is received to move the Rectangle
function moveRect(evt:KeyboardEvent):void {
if (evt.keyCode == Kayboard.LEFT ) {
listener.x -= 5;
}
else if (evt.keyCode == Keyboard.UP ) {
listener.y -= 5;
}
else if (evt.keyCode == Keyboard.RIGHT ) {
listener.x += 5;
}
else if (evt.keyCode == Keyboard.DOWN ) {
listener.y += 5;
}
else {
trace(“a different key was pressed”);
}

}


هنا أختلف الوضع تماماً بحيث أنه يتحقق شرط واحد فقط فـ لا مجال لتحقق أكثر من شرط في نفس الوقت كما حدث مع أداة switch في حاله إزالة الأمر break إلا في حاله أردت أنت ذلك...!!!. في بداية الامر السابق نتحقق من تساوي قيمتين من خلال علامتي == لنرى هل الجزء الأيسر يساوي الجزء الأيمن أم لا...؟! هنا نرى هل رمز الزر التي قام بالضغط عليه المستخدم يساوي رمز السهم لليسار إذا كانا متساويين فإن سوف يقوم بتحريك المربع جهة اليسار وبالمثل مع باقي المقارنات ولكن في حاله عدم تحقق أي من الشروط السابقة فإنه سوف يقوم بتنفيذ ما بداخل الأمر else ليعرض عبارة في نافذة المخرجات Output...

المعاملات:
هناك العديد من المعاملات التي يمكن استخدامها مع أدوات الشرط وهي بالشكل التالي:

http://img26.imageshack.us/img26/719/tablece.png

الحارث بن فيصل
30-05-2014, 05:57 PM
خالص الشكر والامتنان على ما بذلتموه من جهود مباركة في إعداد هذا العمل


وفقكم الله وأثابكم ونفع بكم

أبو يوسف
31-05-2014, 02:59 PM
جزاكم الله خيرا أخانا خادم المسلمين

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

أبو صخر
31-05-2014, 08:24 PM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

abohmam
01-06-2014, 12:11 AM
جزاك الله خيرا أخى خادم المسلمين

بارك الله في جهودك ياطيب

أبو فارس
06-06-2014, 10:52 AM
موفق بإذن الله ... لك مني أجمل تحية .