الشبكة العربية لمطوري الألعاب

خبير مشرف مؤيد مارديني مشاركة 1

السلام عليكم،

في إعلان طرح النسخة الجديدة من  المنتدى (أهلاً وسهلاً بالجميع!) ذكرتم بعض الميزات الجديدة الرائعة (مثل معاينة الموضوع قبل إرساله) و التي لا تقوم بإعادة تحميل الصفحة كاملةً لإظهار النتائج، كما ذكرتم أنكم *لم* تستخدموا أجاكس في برمجة هذه الميزات، هل يمكن أن تعطوني لمحة عن كيفية تنفيذ هذا برمجياً دون استخدام هذه التقنية؟

شكراً جزيلاً

Moayad Mardini,
MSDN Forums Moderator

خبير مدير وسام البهنسي مشاركة 2

نعم. في عملية تأليف المشاركة يمكنك معاينة ما تكتب دون الحاجة إلى أعادة تحميل الصفحة كاملة، ونفس الوضع بالنسبة للمرفقات كذلك.
 
الفكرة تكمن في تسليم التغييرات للمخدم واستقبال الرد من صفحة أخرى تفتح بشكل موازي لصفحة تأليف المشاركة المرئية. يمكنك فعل ذلك عن طريق وضع معرف IFRAME ضمن الصفحة، بحيث يتم تسليم الطلب واستقبال الرد من خلاله حصراً. هذا الـ IFRAME غير مرئي للمستخدم.
 
عندما تضغط زر المعاينة، فإننا نقوم بسحب النص وإرساله عبر الـ IFRAME، وهنا يتم تنفيذ script لإظهار عبارة "الرجاء الانتظار". عندما يصلنا الرد من المخدم، فإننا نعلم ذلك عن طريق event يتم استدعاؤه حال إتمام تحميل الرد في الـ IFRAME (هو onload). عندها يتم إخفاء عبارة  "الرجاء الانتظار" ويتم نسخ محتوى الـ HTML من الـ IFRAME، ووضعه كما هو في عنصر معين داخل صندوق المعاينة، مما يظهر النص الجديد في الصندوق.
 
الطريقة بسيطة جداً وفعالة برأيي، وهذا هو السبب الذي أبعدنا عن استخدام AJAX هذه المرة.
 
من الحقائق المضحكة عن هذا الموقع أنه يستخدم كود من محرك DSK في العمل (بالتحديد في معالجة المرفقات). الكود طبعاً مكتوب بلغة ++C، وقد تم بناؤه كمكتبة Class Library باستخدام C++/CLI ليتاح نداؤه بشكل نظامي من أي لغة NET.
 
أعتقد أن هذا هو المنتدى الوحيد في العالم الذي يعتمد على تقنيات محرك ثلاثي الأبعاد في عمله☺
يمكننا القول إذن أن "تطوير الألعاب يجري في عروقه"  ☺

وسام البهنسي
مبرمج في يونيتي وإنفريمز

خبير مشرف مؤيد مارديني مشاركة 3

يالها من فكرة بسيطة و ذكية جداً، لم أتوقع أن بإمكانك الاستغناء عن الأجاكس في برمجة هكذا ميزات!

جزيل الشكر لك أستاذ وسام

Moayad Mardini,
MSDN Forums Moderator