فصل یازدهم : رویدادها

رویدادها (Events)

در دو فصل اول اشیایی را معرفی کردیم که دارای خواص (Properties) و عملیات (Operations) هستند.

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

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

رویدادها به نوعی برعکس عملیات هستند.

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

در حالی که در مورد رویدادها، رایانه به شما اجازه وقوع یک اتفاق جالب را می دهد.

 

مزیت استفاده از رویدادها چیست؟

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

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

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

اینجاست که باید از رویدادها استفاده کنید. شما ورودی های کاربر را از داخل برنامه خود با استفاده از رویدادها دریافت می کنید.

اگر درک این موضوع سخت به نظر می رسد، نگران نباشید، مثال ساده زیر به شما کمک می کند تا بفهمید رویدادها چه هستند و چگونه می توان از آنها استفاده کرد.

 

برنامه زیر فقط یک دستور و یک زیر روال دارد.

زیر روال از عملیات ShowMessage روی شی GraphicsWindow برای نمایش یک کادر پیام به کاربر استفاده می کند.

GraphicsWindow.MouseDown = OnMouseDown

Sub OnMouseDown

GraphicsWindow.ShowMessage(“You Clicked.”, “Hello”)

EndSub

بخش جالبی که در برنامه بالا باید به آن توجه کرد خطی است که در آن نام زیربرنامه را به رویداد MouseDown شی GraphicsWindow اختصاص می دهیم.

همانطور که ملاحظه می کنید، MouseDown بسیار شبیه به یک خاصیت می باشد، با این تفاوت که به جای اختصاص یک مقدار، زیرروال OnMouseDown را به آن اختصاص داده ایم.

این چیزی است که خاص رویدادها می باشد، هنگامی که رویداد اتفاق می افتد، زیربرنامه به طور خودکار فراخوانی می شود.

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

برنامه را اجرا کرده و آن را امتحان کنید. هر زمان با ماوس خود بر روی GraphicsWindow کلیک کنید، یک کادر پیام مانند تصویر زیر را مشاهده خواهید کرد.

شکل 1-11 _ پاسخ به یک رویداد

شکل ۱-۱۱ : پاسخ به یک رویداد

 

استفاده این گونه از رویدادها، امکان اجرای برنامه های خلاقانه و جالب را فراهم می کند.

برنامه هایی که به این روش نوشته می شوند اغلب برنامه های رویداد محور نامیده می شوند.

 

می‌توانید زیرروال OnMouseDown را برای انجام کارهای دیگری به غیر از نمایش یک کادر پیام تغییر دهید.

به عنوان مثال، برنامه زیر، با کلیک موس بر روی صفحه ، نقاط آبی بزرگی را در آن می کشد.

“GraphicsWindow.BrushColor = “Blue

GraphicsWindow.MouseDown = OnMouseDown

 

Sub OnMouseDown

x = GraphicsWindow.MouseX – 10

y = GraphicsWindow.MouseY – 10

GraphicsWindow.FillEllipse(x, y, 20, 20)

EndSub

شکل 2-11 _ شکل دیگری از مدیریت رویداد MouseDown

شکل ۲-۱۱ : شکل دیگری از مدیریت رویداد MouseDown

 

استفاده از چندین رویداد

هیچ محدودیتی برای تعداد رویدادهایی که می خواهید در برنامه از آن ها استفاده کنید، وجود ندارد.

حتی می توانید یک زیربرنامه داشته باشید که در آن از چندین رویداد استفاده نمایید.

 

برای توضیح این موضوع، بیایید مثال قبلی را در نظر بگیریم و یک زیربرنامه به آن اضافه کنیم که فشار کلید را کنترل می کند.

همچنین، اجازه دهید این زیربرنامه جدید رنگ قلم را تغییر دهد، به طوری که وقتی ماوس خود را کلیک می کنید، یک نقطه رنگی (با رنگ تصادفی) ظاهر شود.

“GraphicsWindow.BrushColor = “Blue

GraphicsWindow.MouseDown = OnMouseDown

GraphicsWindow.KeyDown = OnKeyDown

 

Sub OnKeyDown

()GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor

EndSub

Sub OnMouseDown

x = GraphicsWindow.MouseX – 10

y = GraphicsWindow.MouseY – 10

GraphicsWindow.FillEllipse(x, y, 20, 20)

EndSub

شکل 3-11 _ استفاده از چندین رویداد

شکل ۳-۱۱ : استفاده از چندین رویداد

 

اگر این برنامه را اجرا کنید و روی پنجره کلیک کنید، یک نقطه آبی خواهید داشت.

اکنون، اگر یک بار کلیدی را فشار دهید و دوباره کلیک کنید، یک نقطه رنگی متفاوت دریافت خواهید کرد.

زمانی که یک کلید را فشار می دهید اتفاقی که می افتد این است که زیرروال OnKeyDown اجرا می شود که رنگ قلم را به رنگ تصادفی تغییر می دهد.

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

 

نوشتن یک برنامه نقاشی

با استفاده از رویدادها و زیربرنامه ها، می توانیم برنامه ای بنویسیم که به کاربران اجازه می دهد روی پنجره نقاشی کنند. نوشتن چنین برنامه ای در اسمال بیسیک بسیار آسان است.

به عنوان اولین قدم، اجازه دهید برنامه ای بنویسیم که به کاربران امکان می دهد ماوس را در هر نقطه از پنجره گرافیکی حرکت دهند و هر جا که ماوس را حرکت دادند، دنباله ای از خود باقی بگذارد:

GraphicsWindow.MouseMove = OnMouseMove

 

 Sub OnMouseMove

x = GraphicsWindow.MouseX

y = GraphicsWindow.MouseY

GraphicsWindow.DrawLine(prevX, prevY, x, y)

prevX = x

prevY = y

EndSub

با این حال، هنگامی که این برنامه را اجرا می کنید، خط اول همیشه از لبه سمت چپ بالای پنجره شروع می شود (۰، ۰).

ما می‌توانیم این مشکل را با مدیریت رویداد MouseDown برطرف کنیم و مقادیر prevX و prevY را در هنگام اجرای آن رویداد، ذخیره نماییم.

همچنین، ما واقعاً تنها زمانی به دنباله نیاز داریم که کاربر دکمه ماوس را پایین نگه داشته باشد. در مواقع دیگر، ما نباید خط بکشیم.

برای دریافت این رفتار، از ویژگی IsLeftButtonDown در شی ماوس استفاده می کنیم.

این ویژگی نشان می دهد که آیا دکمه چپ، پایین نگه داشته شده است یا خیر.

اگر این مقدار درست باشد، خط رسم می شود، در غیر این صورت، خطی رسم نمی گردد.

GraphicsWindow.MouseMove = OnMouseMove

GraphicsWindow.MouseDown = OnMouseDown

 

 Sub OnMouseDown

prevX = GraphicsWindow.MouseX

prevY = GraphicsWindow.MouseY

EndSub

 

Sub OnMouseMove

x = GraphicsWindow.MouseX

y = GraphicsWindow.MouseY

If (Mouse.IsLeftButtonDown) Then

GraphicsWindow.DrawLine(prevX, prevY, x, y)

EndIf

prevX = x

prevY = y

EndSub

ترجمه و تألیف : کامبیز حسامی

تهیه شده در : تیناسافت

 

 

بازگشت به صفحه اصلی آموزش اسمال بیسیک

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *