الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تدوير عنصر ضمن MovieClip في ActionScript

مغلق
بدأه MMSs في 31 ديسمبر 2005 · 5 رد · 599 مشاهدة · في التصميم والفلاش والبرامج الرسومية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يرجى استعراض الملف المرفق أولاً ثم الإجابة !!

السؤال هو لماذا يتوقف الـ MovieClip عن العمل عند إعطاء قيمة جديدة للخاصة _rotation للعنصر

الذي بداخله؟ وكيف نحل هذه المشكلة؟

هل يجب علي استخدام الصف Matrix من أجل حل هذه المشكلة. ربما يمكن إنشاء متغير من النمط Matrix

وتطبيق دوران عليه:

var matrix:Matrix;

matrix.rotate(rotation);

[code]

ولكن عندها سيكون السؤال كيف سيتم تطبيق هذا الـ Matrix على العنصر المطلوب؟

rotation.zip

تم تعديل هذه المشاركة بواسطة MMSs في 31 ديسمبر 2005 في 15:16

#2

بصراحه الملف المرفق فيه خطأ في عملية انتقال العنصر في عملية Notion

ارجو منك التوضيح لما تريده.

هل تريد ان يدور العنصر باتجاه العكس؟؟

على كل حال يجب عليك اضافة الامر Stop في المقطع الاخير للمشهد و للعنصر.

var rotation:Number = Math.random() * 10 * 180;

movie_mc.triangle_mc._rotation = rotation;

stop();

اذا اراد الله بعبد خيراً فقهه في دينه

((إياكم والغلو في الدين فإنما هلك من كان قبلكم بالغلو في الدين )).

( إن هذا الدين يسر ولن يشاد هذا الدين إلا غلبه فأوغلوا فيه برفق )

( هلك المتنطعون ، هلك المتنطعون ، هلك المتنطعون )

<span style='font-size:14pt;line-height:100%'>طريقة سريعة لحفظ كتاب الله العزيز</span>

<span style='font-size:14pt;line-height:100%'>تعرف على عباقرة الكذب</span>

#3

شكراً لك على مرورك أخي الكريم،

لا يهمني كثيراً مدى جودة إنشاء هذا الملف فهو بغرض التجربة فقط. ولكن الذي يجب أن يحصل، أو الأمر الذي أريده أن يحصل هو:

الـ Movie يحتوي على عنصر MovieClip بداخله هو Triangle ويقوم بتحريكه من اليسار إلى اليمين بحركة بسيطة جداً فقط تعطي دليل على أن الـ Movie شغال. المشهد الرئيسي مؤلف من عدد فريمات يزيد عن عدد فريمات الـ Movie بفريم واحد. في الفريم الأخير من المشهد الرئيسي يجب تطبيق تدوير على العنصر Triangle بزاوية ذات قيمة عشوائية، بحيث يستمر الـ Movie يعمل بشكل طبيعي.

الـ Instance Name للـ Movie هو movie_mc

والـ Instance Name للـ Triangle الذي بداخل الـ Movie هو triangle_mc

وبالتالي الاسم الكامل للجسم الذي يجب تدويره هو movie_mc.triangle_mc

لاحظ أن التدوير يتم على الـ Triangle فقط وليس على الـ Movie أي في بداية الحركة يكون الرأس الأحمر للمثل متجه إلى اليمين تماما كما اتجاه الحركة، ولكن عند تدوير المثلث سوف يتغير اتجاه المثلث الأحمر ولكن الحركة تبقى كما هي من اليسار إلى اليمين.

الآن المشكلة هي كما لاحظت أن الـ Movie يتوقف عن الحركة بعد تغيير زاوية دوران الـ Triangle حتى وإن استدعيت الأمر play()، والمطلوب هو إمكانية تدوير المثلث دون أن يتوقف الـ Movie.

#4

حسناً، لقد تمكنت من تطبيق Matrix transformation على هذا المثلث، وقد أرفقت الملف هنا.

لقد حلت المشكلة الأولى وهي توقف الـ Movie عند تغير الـ rotation للمثلث، ولكن ظهرت مشكلة جديدة هي؛ يتم تطبيق الـ Matrix على المثلث للحظة أو أجزاء من الثانية ثم يعود إلى حالته الأولى، والآن أصبح السؤال هو كيف نثبت تعديلات الـ Matrix Transformation على المثلث؟

rotation.zip

#5

قم بوضع function في المقطع الاول لقرائة اخر متغير تم اخذه من Matrix transformation او متغير منفصل يحدد حالة الدوران للعنصر.

اذا اراد الله بعبد خيراً فقهه في دينه

((إياكم والغلو في الدين فإنما هلك من كان قبلكم بالغلو في الدين )).

( إن هذا الدين يسر ولن يشاد هذا الدين إلا غلبه فأوغلوا فيه برفق )

( هلك المتنطعون ، هلك المتنطعون ، هلك المتنطعون )

<span style='font-size:14pt;line-height:100%'>طريقة سريعة لحفظ كتاب الله العزيز</span>

<span style='font-size:14pt;line-height:100%'>تعرف على عباقرة الكذب</span>

#6

أخيراً -الحمد لله- وجدت الحل.

كما يقال، معرفة المشكلة تكون نصف الحل، والمشكلة كما أراها:

إنني أحاول تدوير العنصر (وهو triangle) الموجود ضمن الـ Movie بشكل مباشر، حيث أن عملية التدوير تحصل في فريم معينة أثناء عمل المشهد الرئيسي تتوافق مع الفريم الأول للـ Movie لدورته الثانية. وتنفيذ عملية التدوير على عنصر موجود ضمن عنصر أب يؤدي إلى تدويره في الفريم الموافق للفريم الذي يحوي تعليمات ActionScript.وعند تنفيذ ذلك بـ Transformation عن طريق Matrix يؤدي إلى تدوير هذا العنصر لفريم واحد فقط، بينما يؤدي إلى توقف عمل الـ MovieClip الأب عند تدوير هذا العنصر عن طريق تعديل قيمة الخاصة _rotation.

هذا التحليل البسيط للمشكلة أدى بي إلى فكرة وجوب عدم تعديل زاوية دوران لعنصر ما موجود ضمن MovieClip فيه حركة، لأن التعديل يحصل فقط في فريم واحد. لذلك يجب أن يتم التعديل على عنصر موجود في المصتوى الثاني (حيث الـ Movie الذي يحوي الحركة هو المستوى 0، والمثلث Triangle في المصتوى الأول منه). لذلك تم إنشاء رمز بالاسم sub triangle يتم تدويره، يحتويه الرمز triangle.

وفي هذه الحالة يمكن تطبيق أياً من الطريقتين في تدوير الرمز، _rotation أو Matrix Trasformation.

سيئة هذه الطريقة هي كثرة الرموز في المكتبة.

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

rotation.zip

هذا الموضوع مغلق.

مواضيع مشابهة