PDA

نسخه کامل مشاهده نسخه کامل : ساختن صحنه بارش برف!



phoenix_haker
09-01-2008, 18:26
سلام .
بعد از این بارش های اخیر به یاد یک برنامه تفریحی افتادم که از یکی از اساتید توی یه مجله یاد گرفتم . با این برنامه میشه صحنه بارش برف را در flashMX ActionScrip برنامه نویسی کرد و از بارش برف حتی در تابستان هم لذت ببریم. لااقل امتحانش مجانیه !!!


1.برای شروع :

ابتدا یک دانه برف ترسیم کنید و ان را به صورت مووی کلیپ ذخیره کنید سپس یک نمونه از ان در صفحه قرار داده و نام ان را barf بگذارید.

2. حال اسکریپ زیر را به ان اضافه کنید:

}(onClipEvent(load

this._x = Math.random()*550;
this._y = Math.random()*400;
speed = Math.random()*3+3;
drift = Math.random()*2-1;
rotate = Math.random()*6-3;
{


onClipEvent(enterFrame) {e

this._y += speed;
this._x += drift;
this._rotation += rotate;

if(this._y > 400) this._ = 0;
if(this._x < 0) this._x = 550;
if(this._x > 550) this._x = 0;
{

!

در قسمت اول با اجرا شدن فیلم فلش مختصات x وy مکانی برای دانه برف در صفحه تعیین میک
جونند. متغییرهای speed حرکت عمودیو متغییر drift حرکت افقی دانه برف را کنترل مکنند. در آخرمتغییر rotate مقدار دوران دانه برف را مشخص میکند.

دقت کنید برای اینکه حرکت دانه برف غیر واقعی به نظر نرسد از تابع ریاضی random استفاده شده است . این تابع عددی را به عنوان ورودی دریافت کرده و بر اساس ان یک مقدار عددی تصادفی بین صفر و ان عدد ایجاد میکند. مثلا Math.random*12 یک عدد بین صفر تا 12 تولید میکند.

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

if(this._y >400)this._y = 0;

و بعد از خروج از یکی از کناره های صفحه به کناره دیگر منتقل میشود.
if(this._x <0)this._x = 550; //right side
if(this._x >550)this._x = 0;//left side


خب حالا فیلم فلش را اجرا کنید. بله درست کار میکند ولی یک اشکال دارد و ان اینکه بارش برف فقط یک دانه برف دارد!اما اینکه چیزی نیست میتوان چند صد نمونه از دانه برف ایجاد کرد و در صفحه قرار داد.
جواب درست است ولی راه ساده تری برای دوستان حرفه ای وجود دارد و ان استفاده از اسکریپ زیر را به time line فیلم فلش اضافه کنید.


for(var i=0; i<50;i ++){e
barf.duplicateMovieClip("barf"+i,i);e
{


این اسکریپ 50 دانه برف تولید میکند و برای اینکار از تابع duplicate.MovieClip استفاده مینماید. این تابع یک نمونه کاملا مشابه از مووی کلیپی که به ان معرفی شده ایجاد میکند.

"barf"+i باعث میشود هر نمونه دارای نام متفاوتی باشد و پارامتر i سطح قرارگیری مووی کلیپ را مشخص میکند. در واقع هر نمونه که در سطح بالاتری باشد روی بقیه را میپوشاند . استفاده از تابع ریاضی random باعث میشود که هر نمونه مقادیر متفاوتی داشته باشد.
:santa:البته توی سطری که با قرمز مشخص کردم e نوشته نمیشه ولی برای اینکه بتونم درست بنویسم مجبور شدم بذارمش!در ضمن تمام ;ها هم اخر سطرهاست ولی باز هم نمیدانم اینجا چرا نمیره اخر!!!