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

مشاهدة النسخة كاملة : سؤال حول السحب والإفلات


عبدالمنعم
09-03-2010, 04:14 PM
كيف أستطيع أن أسحب شيء ويبقى في مكانه حتى أستطيع سحبه لعدة مرات

مثال للسؤال في المرفقات :

الاستاذ خليل
09-05-2010, 03:58 PM
ما هو الشكل الذي تود ان تسحبه عدة مرات ؟

هل الكتابة ام الصور ؟ حدد اكثر

الاستاذ خليل
09-05-2010, 05:49 PM
السلام عليكم

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

اضفت اليه كود يحسب الدرجات ارجو ان يكون مفهوما

و طريقته نعرف فقط متغير في حدث اللود lode باسم و يكون كالتالي
sum=0

اي اجعل قيمة المجموع = 0


و نضيف نص داينمك و نكتب اسمه sum في المتغير اي في var و ليس في اسم الكائن



و فقط ماكان الذي نريد ان نضيف درجة نزيد 1 على القيمة كالتالي:


_root.sum+=1;






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


onSelfEvent (load) {
xt1=t1._x;
yt1=t1._y;

xt2=t2._x;
yt2=t2._y;
sum=0;

}


هذا الكود يعمل من بداية ضهور الصفحة اي من بداية تشغيل العمل يتنفذ فيه هذه الاوامر

السطر الاول عرفنا متغير اسمه xt1 و به يحفظ قيمة موضع النص t1 في البعد السيني
السطر الثاني عرفنا متغير اسمه yt1 و به يحفظ قيمة موضع النص t1 في البعد الصادي
السطر الاول عرفنا متغير اسمه xt2 و به يحفظ قيمة موضع النص t2 في البعد السيني
السطر الثاني عرفنا متغير اسمه yt2 و به يحفظ قيمة موضع النص t2 في البعد الصادي
السطر الخامس عرفنا متغير اسمه sum لحساب الدرجات و اعطايناه القيمة 0 من بداية تشغيل العرض



الان قم بدراج نص داينمك و اجعل المتغير var اسمه sum لكي تكتب نتيجة الطالب هناك

قم بصنع اجابة صحيحة و سمها t و تعمل من الفريم الثاني اي تأثير حيث الفريم الاول به توقف
و صنع اجابة خاطئة و سمها f و تعمل من الفريم الثاني اي تأثير حيث الفريم الاول به توقف

اجعل اسم النص الاول طبيعي الاضائة اسمه t1 و لا بد ان يكون تارجت target
اجعل اسم النص الثاني صناعئ الاضائة اسمه t2 و لا بد ان يكون تارجت target

سم صورتين طبيعية الاضاءة باسم s1 , s3 و لا بد جعلهما target

سم صورتين صناعية الاضاءة باسم s2 , s4 و لا بد جعلهما target

قم بالضغط النص ذاتي الاضاءة و الصق به هذا الكود

على السكربت و الصق هذا الكود .


onSelfEvent (press) {
startDrag(_target, false);
}
onSelfEvent (release) {

stopDrag();


if (_droptarget==_root.s1._target) {
_root.s1._visible=false;
_root.sum+=1;
_root.t.gotoAndPlay(2);
}else if (_droptarget==_root.s3._target) {
_root.s3._visible=false;
_root.sum+=1;
_root.t.gotoAndPlay(2);
}else{
_root.f.gotoAndPlay(2);
}

_root.t1._x=_root.xt1;
_root.t1._y=_root.yt1;
}




قم بالضغط على نص صناعي الاضاءة t2 و الصق به هذا السكربت
onSelfEvent (press) {
startDrag(_target, false);
}
onSelfEvent (release) {

stopDrag();


if (_droptarget==_root.s2._target) {
_root.s2._visible=false;
_root.sum+=1;
_root.t.gotoAndPlay(2);
}else if (_droptarget==_root.s4._target) {
_root.s4._visible=false;
_root.sum+=1;
_root.t.gotoAndPlay(2);
}else{
_root.f.gotoAndPlay(2);
}

_root.t2._x=_root.xt2;
_root.t2._y=_root.yt2;
}




اقصد بهذا الكود عندما يضغط المستخدم على النص يتم السماح للنص بالتحرك مع الماوس و هو اول ثلاثة اسطر


و عندما يفلت المستخدم النص يحصل ما يلي

اول سطر onSelfEvent (release) {
يعني عندما يفلت المستخدم الماوس


stopDrag();
يتم الغاء السحب عن الكائن اي يبقى مكانه


if (_droptarget==_root.s2._target) {


اذا قمنا بافلات الماوس و كنا ساحيبن النص t2 على الهدف s2 يحصل التالي

_root.s2._visible=false;
يتم اخفاء الصورة s2



_root.sum+=1; يتم زيادة 1 على الاجابات الصحيحة


_root.t.gotoAndPlay(2);


يتم تشغيل موفي الاجابة الصحيحة من الفريم الثاني


}else if (_droptarget==_root.s4._target) {
و الا يتنفذ شرط جديد يكون النص t2 ممسوكا الماوس فإذا افلت على الهدف s4 يتنفذ ما يلي

و هي نفس السابق
root.s4._visible=false;
_root.sum+=1;
_root.t.gotoAndPlay(2); يخفي الكائن s4
و يجمع 1 على الاجابات الصحيحة
و يتم تشغيل الاجابة الصحيحة من الفريم الثاني


و الكود

}else{


اذا لم تتنفذ الشروط السابقة يحصل ما يلي

_root.f.gotoAndPlay(2);


يتم تشغيل الاجابة الخاطئة من الفريم الثاني .


} انتهى الشرط

_root.t2._x=_root.xt2; يقوم بارجاع النص t2 لمكانة الاصلي المحفوظ لكي يتم سحبه مرة اخرى في البعد السيني




_root.t2._y=_root.yt2;

و يتم ارجاع الكائن t2 لمكانة الاصلي حسب الموضع الصادي حسب القيمة المحفوظة في ذاكرة الكمبيوتر و التي تم ادراجها في حدث lode


لا حظ انني عمل الشرط فقط لصورتين بها اضاءة طبيعية و 2 اضائتها صناعية فبجب عليك استكمال الشرط

يعني تضيف شرط جديد بعد تسمية الصور الباقية s9 s5 s6 s7 s8 و جعلها جميعها target يكون الشرط اعلى else

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

و اليك الملف ايضا لتقوم بالتعديل عليه و عليك ارجاعه كاملا

الاستاذ خليل

عبدالمنعم
09-05-2010, 07:44 PM
الله يعطيك العافية ويجعله في ميزان حسناتك

أشكرك على الجهد الجبار ، سوف أتدرب عليه .

:0041:

الاستاذ خليل
09-05-2010, 08:03 PM
و لا تنسى تطبيقك كي يستفيد الاعضاء و تتدرب انت