Contacts
صفحه اصلی پورتال | صفحه اصلی تالار | ثبت نام | اعضاء | گروه ها | جستجو | پرسش و پاسخ | فروشگاه الکترونیکی | خرید پستی بازی های کامپیوتری





صفحه اول انجمنها -> نرم افزار Flash -> آموزش شی Math و توابع مثلثاتی
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي

آموزش شی Math و توابع مثلثاتی
نويسنده
پيغام
sina2006
مدیر انجمن
مدیر انجمن


تاريخ عضويت: 5 شنبه 16 شهريور 1385
تعداد ارسالها: 288
محل سكونت: رشت


شنبه 1 دي 1386 - 22:11
پاسخ بصورت نقل قول
به نام خدا

از آخرین باری که من به این انجمن (انجمن فلش) سر زدم تا الان هیچ پستی جدیدی ارسال نشده واقعا تعجب آور یعنی هیچ کس از دوستان مطلبی سوال مقاله نمونه کاری و.......ندارن اینجا بذارن مگه فلش چه گناهی کرده هیچکس تحویلش نمیگیره این نرم افزار واقعا نرم افزاره قدرتمندی حالا دیگه من صحبتمو کردم.

خوب بعد از مدتی گفتم یه آموزش بزارم برای دوستان گلم در انجمن الان چندتا مقاله آماده کردم راجب ساخت بازی و scroll لغزه شی که به زودی پس از پایان این مقاله اونارو میزارم.


خوب بریم سر اصل مطلب این مقاله بسیار ساده و روان همه چیزو توضیح داده امیدوارم خوشتون بیاد.

آموزش شی Math و توابع مثلثاتی........................................................................

شی Math-------------------------------(Mathematical)-------------------------------------

این شی یک سری از توابع خاص که با اعداد کار میکنه. و در این مقاله کاربرد این شی رو بیشتر درک میکنید.


Math.abs چه موقع به کار میرود؟

این تابع قدر مطلق یه عدد رو که براش فرقی نمیکنه چه + و چه – نتیجه میدهد

مثلا میدونیم که قدر مطلق عدد - , + میشود مثلا اگه به این تابع -3 بدیم خروجی نهایی 3 خواهد بود.



كد:

Trace(Math.abs(-3));



Math.round چه موقع به کار میرود؟

خوب حالا میرسیم روی این تابع این تابع اعداد اعشاری را برای ما گرد میکنه به این معنی که مثلا اگر عدد ما 4.2 است. اونو به نزدیکترین حالت یعنی 4 رند میکنه.حالا اگه عدد ما 4.8 باشه خوب معلومه اونو به 5 رند میکنه (گفتم نزدیکترین حالت که میتونه بالا یا پایین باشه)



كد:

Trace (Math. Round(4.8));




Math.ceil چه موقع به کار میرود؟

این تابع همانند تابع بالا عمل میکنه و برای گرد کردن بکار میرود منتهی این تابع عدد را به بالا گرد میکند
یعنی اگه عدد ما 2.3 یا 2.5 یا 2.9 باشه خروجی کلی 3 میباشد.




كد:

Trace (Math.ceil (2.3));




Math.floor چه موقع به کار میرود؟

این تابع عکس تابع Math.ceil میباشد یعنی عددو به پایین گرد میکند. یعنی اگه عدد ما 2.3 یا 2.5 یا 2.9 باشه خروجی کلی 2 میباشد.



كد:

Trace (Math.floor (2.3));




Math.min و Math.max چه موقع به کار میروند؟

خوب از اسم این تابع مشخصه که چه کارایی دارند این دو تابع برای مقایسه بین اعداد به کار میروند حالا چطور به این صورت که ما دو عدد داریم a=2; و b=4; هنگامی که تابع Math.min برای مقایسه این دو عدد به کار میرود عدد کوچکتر رو (تابع مینیموم) در خروجی یعنی a=2; ظاهر میکند.

نکته : برای مقایسه میان اعداد از کامان یا , استفاده می کنیم.
Math.max برعکس تابع قبل عمل میکنه یعنی ماکزیموم عدد رو در مقایسه در خروجی انتخاب و ظاهر میکنه به این صورت که ما دو عدد داریم a=2; و b=4; هنگامی که تابع Math.max برای مقایسه این دو عدد به کار میرود عدد بزرگتر رو (تابع ماکزیموم) در خروجی یعنی b=4; ظاهر میکند.


كد:

Trace (Math.min (2.4));



كد:

Trace (Math.max (2.4));



Math.pow چه موقع به کار میرود؟

زمانی که ما بخواهیم 1 عدد رو به توان برسونیم از این تابع استفاده میکنیم به این صورت که ما میخواهیم عدد 4 را , را به توان 2 برسونیم تا حاصل 16 شود بدین صورت عمل میکنیم:

پارامتر اول در داخل پرانتز خود عدد و پارامتر دوم توانی که قراره برای اون عدد به کار برده بشه
مانند (4,2) چهار به توان 2 مساوی 16.



كد:

Trace (Math.pow (4.2));



Math.sqrt چه موقع به کار می رود؟
این تابع از عدد مورد نظر جذر(ریشه دوم) میگیرد به این صورت که اگر بهش عدد 36 را بدهیم جذر آن یعنی 6 را در خروجی ظاهر میکند.



كد:

Trace (Math.sqrt (36));




پایان توابع.

خوب این از توابع Math حال به سراغ توابع مثلثاتی Math میرویم.

از توابع مثلثاتی sin و cos برای ایجاد جلوه های حرکتی که در فلش بسیار مفیدند استفاده میشود.
این توابع رو ما با Math.sin و Math.cos نشان میدهیم.

شکل کلی در دایره مثلثاتی:
خوب در این شکل (x,y) میباشد در مرکز دایره x و y (0,0) میباشند و به ترتیب در نواحی دیگر در شکل مشخص اند. در برنامه فلش چیزها بنابر مقادیر 2 زوج x و y مستقر میشوند.
در اینجا کار یا وظیفه این توابع sin و cos اینست که نقاط قرمز در شکل را به این دو زوج یعنی x و y تبدیل کنند(به مختصات x و y )













خوب بریم سر اصل مطلب:
نقطه a را در نظر بگیریم که مبدا یا شروع دایره میباشد.در نتیجه مقدارش 0 میباشد.برای بدست آوردن زوج
X و y کافیست که عدد 0 را در cos وsin قرار داده تا مختصات نقاط x وy بدست آید

توجه:اگه میخواهید این مقادیر با ماشین حسابتون ببینید تا اطمینان پیدا کنید حتما روی حالت رادیان بگزارید.


میدانیم:
COS 0 = 1
SIN 0 = 0
پس نتیجه همان 0 و 1 نوشته شده در نقطه a مطابق شکل است.

كد:

Trace (Math.cos(0));




كد:

Trace (Math.sin(0));



حال سراغ نقطه c میرویم برای بدست آوردن عدد این نقطه میدانیم که شعاع این دایره (میتونید خط کش هم بزارید) تقریبا 1 است خوب برای بدست آوردن اندازه خط محیط دایره(خط دور دایره) از فرمول زیر استفاده میشود r که جواب میشود به طور تقریبی 6.28 پس اگر کل خط محیط دایره 6.28 باشد , از مبدا که نقطه a میباشد تا نقطه c که کل محیط است. مقدار نقطه c میشود که بدست می آید 1.57 حال اگر از این عدد cos و sin بگیریم :

SIN 1.57 = -1
COS 1.57 = 0


پس نتیجه همان 0 و -1 است که در شکل مشخص است.این از مختصات این صفحه.


كد:

Trace (Math.cos(1.57));



كد:

Trace (Math.sin(1.57));



خوب میرسیم سر نقطه b از آنجایی که نقطه a 0 میباشد و نقطه c 1.75 میباشد پس نقطه b باید
0.785 باشد.

SIN 0.785 = 0.71
COS 0.785 = -0.71



كد:

Trace (Math.cos(0.785));




كد:

Trace (Math.sin(0.785));


خوب این همه حرف زدیم چه بدر میخوره حتما سوالتون همینه
خوب تو فلش ما میخوایم بعضی از افکتهایی رو ایجاد کنیم مثلا حرکت یه مووی کلیپ به صورت دایره ای یا بیضوی در اینجا شما میخواد فریم به فریم مکان اون مووی را تغییر دهید.میدونید چه قدر طول میکشه در اینجاست که توابع sin و cosبه درد میخوره و موقعیت مووی را روی دایره فرضی با توجه به مختصات x و y را که توضیح دادیم تغییر میده.

آزمایش:
خوب تو محیط فلش یه مووی کلیپ بسازید
سپس کد زیر را بهش اضافه کنید و نتیجه را با این توضیحاتی که دادم مقایسه کنید.


كد:

onClipEvent(load){
   n=0;
   radius=100;
   centerX=250;
   centerY=250;
}
onClipEvent(enterFrame){
   n+=0.1;
   this._x=Math.cos(n)*radius+centerX;
   this._y=Math.sin(n)*radius+centerY;
}



در اینجا radius فاصله مووی نسبت اون مرکز دایره فرضی است. که با تغییر اون این فاصله (شعاع) کم زیاد میشود


centerX و centerY در اینجا موقعیت دایره است که هنگام اجرای فیلم آنرا میبینید که میتوانید خودتان آنرا تغییر دهید.

دانلود فایل Fla از لینک زیر:

http://mshgames.parsaspace.com/Sina.zip

ادامه دارد........

موفق باشید.

سینا

_________________
دانلود بازی افسانه عمو پورنگ نسخه 1

www.amoogame.blogfa.com


اين نامه توسط sina2006 در 5 شنبه 2 خرداد 1387 - 11:33 ويرايش شده است.
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر آدرس AIM نام كاربري در پيغامگير Yahoo نام كاربري در پيغامگير MSN شماره ICQ
 

نويسنده
پيغام
iran_adventure
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 4 آذر 1385
تعداد ارسالها: 2069
محل سكونت: تهران


شنبه 1 دي 1386 - 23:22
پاسخ بصورت نقل قول
ممنون
تو بعضي از كدها به جاي , ( ویرگول ) . ( نقطه ) گذاشتی ... ( گفتم بگم شايد خواستي اصلاح كني )
فکر کنم تعداد فریم رو کم گرفتی چون موقع حرکت تيك مي زنه و سرم درد گرفت !

_________________
Make something happen
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
_Akhtar
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: جمعه 10 فروردين 1386
تعداد ارسالها: 1212


1 شنبه 2 دي 1386 - 00:07
پاسخ بصورت نقل قول
استفاده برديم ، ممنون .

يه سوال : زبون FlashMX با Swish چه تفاوتي داره؟ يا اصلا تفاوت داره؟(!)

_________________
تو هم مثل من تازه واردی؟
از اینجـــا شروع کن! <<<


www.Saeed-Shahriyari.ir
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
منتظر سبز
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 1 شنبه 31 ارديبهشت 1385
تعداد ارسالها: 437


1 شنبه 2 دي 1386 - 01:41
پاسخ بصورت نقل قول
آقا سينا من هم بنوبه خودم تشكر ميكنم. Surprised
پيام هات رو هم چك كن

_________________
در اين انتظار. سبز خواهم ماند و بهار را خواهم ديد.
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
مسعود 16 a
پیر بازی سازی
پیر بازی سازی


تاريخ عضويت: 4 شنبه 29 شهريور 1385
تعداد ارسالها: 1265


5 شنبه 6 تير 1387 - 09:21
پاسخ بصورت نقل قول
sina2006,

خيلي خوبه ممنون!
بعد از مدت ها غبار اين انجمن رو پاك كرديد!
Laughing Laughing باز هم ادامه بده


پيام هاي شخصيتم يه چكي بكن! Idea
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نمايش نامه هاي ارسال شده قبلي:   
ارسال يك موضوع جديد   پاسخ به يك موضوع    صفحه 1 از 1 تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد


 
پرش به:  


شما نمي توانيد در اين انجمن نامه ارسال كنيد.
شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد
شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد


unity3d

بازگردانی به فارسی : علی کسایی @ توسعه مجازی کادوس 2004-2011
Powered by phpBB © 2001, 2011 phpBB Group
| Home | عضويت | ليست اعضا | گروه هاي كاربران | جستجو | راهنماي اين انجمن | Log In |