آموزش فلش و اکشن اسکریپت

معرفی منابع اکشن اسکریپت و فلش و آموزش کار با فلش

آموزش فلش و اکشن اسکریپت

معرفی منابع اکشن اسکریپت و فلش و آموزش کار با فلش

آموزش مدل سازی برخورد توپ با زمین(فیزیک جاذبه)

    برای دیدن آموزش ادامه مطلب را ببینید .


  فیزیک جاذبه


در این آموزش شما خواهید دید که چگونه به یک شی ، افکت جاذبه بدهید .


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



F = m * g

  g برابر است با 10 متر بر مجذور ثانیه . یا  شتاب اجسام در سقوط.
m برابر است با جرم هر جسم .
F  برابر است با نیرویی که زمین به جسم وارد می کند یا همان وزن.
در سقوط آزاد :

شتاب = g
 
speed = g * t + v0
سرعت = g * زمان  + سرعت اولیه
معادله ی بالا معادله سرعت می باشد که با آن می توان در هر لحظه از سقوط ، سرعت را به دست آورد .
t زمان افتادن شی از لحظه افتادن است .


تمام مطالبی که به شما آموزش می دهم را قبلا در فیزیک 1 سال اول دبیرستان دیده اید ، می دانید حرکت سقوط آزاد یک حرکت شتاب دار است . وقتی توپ رها می شود ، سرعت آن هر لحظه زیادتر می شود ، و وقتی به نزدیکی زمین می رسد بیشترین سرعت را دارد و همینطور وقتی توپ به زمین برخورد کرد و به بالا آمد چون شتاب منفی می شود ، سرعت توپ لحظه به لحظه کم می شود تا زمانی که به نقطه اوج خود برسد و دوباره به سمت زمین برگردد. 


حال بیایید کد زیر را بررسی کنیم ، . برای باز کردن این کد ، باید ابتدا برنامه فلش را باز کرده و گزینه های زیر را انتخاب کنید :

file>new  را انتخاب کرده و در پنجره ای که باز می شود گزینه ی actionscript 2 .0 را انتخاب کنید . حالا  گزینه های  insert>new symblol را انتخاب کرده و از پنجره ای که باز می شود در منوی کشویی  movieclip را انتخاب کرده و ok  کنید .

حالا یک شکل دایره ای یک هر چیزی را که دوست دارید بکشید و سپس به صفحه اصلی بروید .

شاید از خودتان بپرسید که شکلی که کشیدید کجا رفت ؟ باید به شما بگویم که سکل شما در پانل library ذخیره شده است ، پانل library  در گوشه ی سمت راست و بالا قرار دارد ، شما می توانید این پانل را به این صورت نیز بیاورید :  window > library  .

حالا در پانل library  شکلی را که کشیدید مشاهده می کنید ، آن را به روی صفحه درگ کنید .

و روی شکل خود کلیک کرده و در پانل actions  کلیک کنید ، و کد هدی زیر را کپی کنید ، سپس برنامه را اجرا کنید (ctrl+enter) .


خواهید دید : 


آنچه ما درست کردیم یک مثال جالب بود ، . سرعت توپ دائما توسط جاذبه زیاد می شود ، طوری که هرچه از زمان افتادن می گذرد سرعت توپ هم بیشتر می شود .   

حال به توضیح کد می پردازیم : 


در خط اول ما یک شنونده ی رویداد ایجاد کردیم . این شنونده ی رویداد را بر روی خاصیت load   تنظیم کردیم ، این خاصیت باعث می شود که کد هایی را که در شنونده ی روداد قرار داده ایم ،در لحظه اجرا اعمال شوند و فقط یک بار .


 در خط دوم میزان جاذبه را تعیین کردیم ، هرچه عدد gravity بیشتر باشد ، نشان می دهد که جاذبه بیشتر است ، در اینجا ما میزان جاذبه را برابر 2 قرار دادیم . 


در خط سوم  سرعت اولیه را مشخص کرده ایم ، speedy سرعت اولیه را نشان می دهد که ما آن را برابر با صفر قرار دادیم .


در خط پنجم ما یک شنونده ی رویداد دیگر ایجاد کردیم . این شنونده ی رویداد را بر روی خاصیت  enterFrame  تنظیم کردیم ، این خاصیت باعث می شود که کد هایی را که در شنونده ی روداد قرار داده ایم ،هر لحظه اجرا شوند یعنی این کد ها هر لحظه به اجرا در می آیند .


در خط ششم ما این کد را داریم : speedy=speedy + gravity این کد به برنامه میگوید که در هر لحظه به سرعت اولیه ،  gravity را اضاف کن ، این یعنی که در هر لحظه سرعت را افزایش بده  .


در خط هفتم این کد را داریم : this._y += speedx /5   این کد به برنامه می گوید که y  توپ را هر لحظه به اندازه ی speedx ، تقسیم بر 5 اضاف کن . این تقسیم بر پنج اختیاری است ، شما می توانید هر عدد دیگری را جای آن بگذارید ، هرچه بر عددی بزرگتر تقسیم کنید توپ شما دیرتر پایین می آید .


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

وقتب توپ به زمین برخورد می کند قاعدتا باید مقداری از انرزی خود را از دست بدهد ، پس باید y ها قرینه شوند ، یعنی y  شکل که تا کنون افزایش می یافت اکنون باید کاهش یابد تا شکل به سمت بالا برود .

و  ما می خواهیم که پس از هر برخورد ، انرژی توپ کاسته شود ، پس باید speedy در یک عدد(bounce) کمتر از یک ضرب شود تا در زمان اوج ، y شکل کمتر از y قبلی باشد .

برای تجسم ، این کد شکل اول صفحه را ببینید .


مانند کد قبل :

در خط اول یک شنوده رویداد ایجاد کردیم و gravity را برابر 2 قرار دادیم و درون این شنونده رویداد:، floor را برابر 350 ،و bounce را برابر 0.92  قرار دادیم ، لازم به ذکر است که هرچه مقدار bounce به عدد یک نزدیکتر باشد ، اتلاف انرژی کمتر صورت می گیرد و تعداد برخوردهای توپ به زمین بیشتر می شود .


در خط پنجم سرعت اولیه را برابر صفر قرار دادیم .


در خط ششم یک شنونده رویداد ایجاد کردیم (enterframe)که در درون آن :

در خط هفتم ، تساوی را طوری قرار دادیم که در هر لحظه به سرعت شی اضافه کند .

در خط هشتم به برنامه گفتیم که y  شکل را در هر لحظه اضافه کند .


در خط نهم یک دستور جدید می بینیم که به برنامه می گوید که وقتی y شکل به 350 رسید ، آنگاه سرعت را معکوس کند و در عدد کاهنده انرژی ضرب کند .


ادمه این درس که در زیر آمده است نیاز به پیشنیازهای بیشتری دارد که بعدا آنها را بازگو خواهم کرد و ادامه را نیز ترجمه خواهم نمود .



Now imagine that we want to drag the ball and then let it go.
The first thing we have to do is check if the ball is being dragged. In order to do so, we'll put a button inside the ball movie clip, with the code :


If we're not pressing, we will do with the old code, but if we're pressing, we have to start dragging the movie clip and calculate its speed. Here's the complete code of the movie clip :




If you don't get it, just check the elasticity tutorial, I tried to explain the principle better there.


Last but not least, I told you at the beginning about the physics behind it. Well, it is possible to program the ball so that it moves according to real equations, and not simply ransom figures.
We had speed = g * t + starting_speed. All we have to do is get the time when the ball is thrown. Be careful though : we have to reset the timer and the starting speed every time the ball bounces or is released. Here's the code :

[ the final version of the file ]


The motion isn't really different from the previous one, but it comes directly from the physics equations of motion. There! I hope you understand gravity in Flash a little bit better now.
 

Click here for all of the source files for this tutorial regarding gravity.

This tutorial is written by Ilyas Usal. Ilyas is also known as ilyaslamasse on the kirupa.com forums! If you have any questions, please post them on the forums by clicking here.

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد