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

كيفية إضافة تأثير ثلاثي الأبعاد

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

في الملف المرفق عرض ثلاثي الأبعاد، أرجو استعراضه منكم ثم شرح السطر التالي الموجود في الطبقة Layer1 ضمن الـ MovieClip بالاسم m_drag resize control:

x = 57 + Number(getProperty("/ball", _y) / 6) - (getProperty("/ball", _x) / 20);

طبعاً هذا السطر هو المسؤول عن إنشاء التأثير ثلاثي الأبعاد عن طريق تصغير الكرة عند تغيير موضعها باتجاه الزاوية العليا اليمنى وتكبيرها عند تحريكها بالتجاه المعاكس. ما أريده بالضبط هو سبب اختيار تقسيم _y على 6 والطرح منه ناتج قيمة قسمة _x على 20 ثم جمع الرقم 57 لهم. فما سبب اختيار هذه الأرقام تحديداً.

خبرتي بـ Flash لا بأس بها، لذلك لا داعي لإرهاق أنفسكم بشرح الأمور الصغيرة.

ولكم الشكر.

3DDRAG.zip

#2

أخي العزيز ,هذه القيم يتم تعيينها بالتجربة ,ويمكنك مثلا أن تحذف الرقم 57 في بداية الكود ,ولكن سيكون حجم الكرة صغير جدا ,إذا تجرب عدة مرات بأرقام مختلفة حتي تصل إلي الحجم المطلوب,أما باقي الكود فهو يقسم الإحداثي السيني للكرة علي 6,ويقسم الإحداثي الصلدي لها علي 20 ,ويطرحهما ,ثم يضيفهما إلي العدد 57,ويكون الناتج هو مقياس الطول و مقياس العرض للكرة,ويمكنك أيضا أن تجرب تقليل العدد 6 إلي 3 مثلا ,والعدد 20 إلي 10,ولاحظ الفرق,ستجد أن الملف يعمل أيضا ولكن حجم الكرة سيزيد ,فنجرب بأرقام متعددة حتي نصل إلي الرقم المطلوب وهو هنا 20 و 6,وهناك طريقة أسهل لكتابة ذلك الكود دون استخدام أمر getProperty و لا setProperty وهي كالتالي:

x = 57+_root.ball._y/6-_root.ball._x/20

_root.ball._yscale = x

_root.ball._xscale = x

ولو افترضنا مثلا أن كلا من الإحداث السيني و الصادي للكرة في لحظة ما هو 60,ستكون قيمة الx كالتالي:

x = 57 + (60/6 - 60/20 أي 64 .

ولو زاد الاحداثي السيني مثلا فأصبح مثلا 120 نلاحظ أن قيمة ال x تقل فتصبح x=61 أي أنه كلما زاد بعد الكرة يقل حجمها ,ونفس الشيء مع الاحداثي الصادي ,كلما يزيد يدل علي اقتراب الكرة ,ولو زدناه مثلا فأصبح 120 نلاحظ أن قيمة x تصبح 74 أي يزيد حجم الكرة ,وهكذا نلاحظ التالي:

1. كلما زاد ابتعاد الكرة في السيني يقل حجمها .

2. كلما زاد ابتعاد الكرة في الصادي يزيد حجمها (أي تقترب من الشاشة أو المشاهد).

والعكس صحيح ...... . B)

#3

شكراً جزيلاً لك أخي armor على مساعدتك.

لقد فهمت الآن سبب القيام بعملية الطرح y - x وهي طبعاً زيادة x تؤدي إلى نقص الناتج وبالعكس، وزيادة y تؤدي إلى زيادة الناتج وبالعكس، والناتج يؤثر طرداً على حجم الكرة.

ولكن عذراً، فمجرد التجربة للحصول على الأرقام 57 20 6 مسألة طويلة وتأخذ وقت عندما تريد تصميم عرض ثلاثي الأبعاد من منظور مختلف، ففي هذا العرض قد اعتبر المصمم أن الزاوية العليا اليمنى هي أبعد نقطة والزاوية المقابلة هي أقرب نقطة للمستخدم، فماذا لوأردت اعتبار عنصر ما آخر موجود في مسرح العمل وليكن في الوسط هو أبعد نقطة وكلما ابتعدت عنه بقية العناصر بدأت وكأنها تقترب من الشاشة أكثر، أي في الواقع العملي حجمه يكبر، لذلك أعتقد أن هناك سبب رياضي أو علة رياضية تربط هذه الأرقام مع قياس مسرح العمل وهي هنا 640*480.

#4

إذا جربت تغيير الأرقام أكثر من مرة ,فستعرف ما أقصده بالضبط ,وتخيل أنك أنت من تكتب الكود .

#5

حسناً أخي الكريم،

لقد جربت تغيير الأرقام مسبقاً، وأنا أفهم عليك ما تريد قوله، عندما يكون العمل تصميم سنجد أن هناك الكثير من الأمور لا تكون إلى بالتجربة أو بالنظر.

ولكني لا أزال أعتقد بوجود طريقة ما رياضية من أجل حساب هذه الأرقام، وعذرني على إلحاحي هذا.

#6

نعم هناك عدة طرق لحساب هذه الارقام

ربما انك تستغرب من وجود هذه الارقام و كيف حصل عليها المصمم

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

ايضا هناك قواعد math و التي تتصل اتصال مباشر في العمليات الاقليه للحسابات في التأثيرات ذات الطابع المتكرر.

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

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

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

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

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

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

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

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