آموزش keyboard event

mohammadbasri

کاربر فعال
تصمیم دارم هر چی که یاد میگیرم به اشتراک بذارم.
در اینجا یکمی وارد مبحث keyboard event میشم.
مدیران محترم و پیشکسوتان حق دارن چنانچه این مبحث ایرادی داشته باشه اونو اصلاح کنن و یا آموزش جدید اضافه کنن

برای استفاده از کیبورد در اکشن اسکریپت 3 باید از مبحث مهم رخدادها و شنونده های رخدادها استفاده کنیم
مبحث رخدادها event رو در اینجا آموزش دادن
من در اینجا چند نمونه از روشهای استفاده از کیبورد رو قرار میدم

در اینجا با فشرده شدن هر کلیدی در کیبورد دستور موجود در تابع اجرا میشه
البته بعضی کلیدهای در محیط فلش ممکنه اجرا نشن و باید فایل SWF رو در خارج از فلش باز کنید و تست کنید
یه چند تا کلید هست که ممکنه کار نکنن مثل کلید prtSc و کلیدهای f10 وalt که اونهم به خاطر وجود منوی فلش پلیر هست که با حذف منو مشکل حل میشه.
کد زیر رو در پنل اکشن کپی کنین و نتیجه کار رو مشاهده کنید
PHP:
stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
function myKeyDown(e:KeyboardEvent):void{
trace("Key Pressed");
}

برای اینکه بتونید کدهای بالا رو در خارج از فلش هم چک کنید ، چون دستور trace مخصوص داخل فلش هست میتونید کار زیر رو انجام بدید
کدهای زیر رو کپی کنید
مشاهده می کنید که من به کدها چند خط اضافه کردم
اگه خوب دقت کنید میفهمید که کدها مال چیه
من در اینجا یک دستور stop به کدها اضافه کردم، چون میخواهیم یک فریم به پروژه اضافه کنیم. در فریم دوم میتونید یک مربع ساده بکشید
حالا پروژه رو خروجی بگیرید و نتیجه رو ببینید
PHP:
stop();

stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, myKeyUp);

function myKeyDown(e:KeyboardEvent):void{
gotoAndStop(2);
}

function myKeyUp(e:KeyboardEvent):void{
gotoAndStop(1);
}

کد زیر شماره کد های کلید رو براتون نشون میده
PHP:
stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
function myKeyDown(e:KeyboardEvent):void{
trace(e.keyCode);
trace(e.charCode);
}

در اینجا میتونید از کلیدهای غیر اصلی مثل A , O , G و غیره استفاده کرد
توجه داشته باشید که حروف باید بزرگ باشن
PHP:
stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
function myKeyDown(e:KeyboardEvent):void{
if (e.keyCode == Keyboard.A){
trace("Success!");
}
}

در اینجا از کلیدهای اصلی میشه استفاده کرد
مانند کلیدهای جهت و یا space و یا escape استفاده کرد
PHP:
stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
function myKeyDown(e:KeyboardEvent):void{
if (e.keyCode == Keyboard.SPACE){
trace("Success!");
}
}

در بالا دیدید که چطوری میشه از کلید های اصلی استفاده کرد
دستورات زیر همون دستورات بالاست منتهی برای این دوباره میارمش که برای مثال بعدی آماده سازی کنم
در اینجا از کلیدهای جهت استفاده کردیم
کدهای زیر یک مووی کلیپ رو کنترل می کنن
پس باید یک مووی کلیپ درست کنین، اسمش رو در instance name یادتون نره! my_mc
PHP:
stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
function myKeyDown (e:KeyboardEvent):void{

if (e.keyCode == Keyboard.LEFT){
my_mc.x -=5;
}

if (e.keyCode == Keyboard.RIGHT){
my_mc.x +=5;
}

if (e.keyCode == Keyboard.UP){
my_mc.y -=5;
}

if (e.keyCode == Keyboard.DOWN){
my_mc.y +=5;
}

}

خب
کدهای زیر همون کار کدهای بالا رو انجام میدن منتهی بجای استفاده از if از switch استفاده کرده
مبحث های if و swith رو هم در همون مبحثی که در بالا لینکشو کذاشتم آموزش دادند.
PHP:
stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
function myKeyDown(e:KeyboardEvent):void {

switch (e.keyCode) {
case Keyboard.LEFT :
my_mc.x-=5;
break;

case Keyboard.RIGHT :
my_mc.x+=5;
break;

case Keyboard.UP :
my_mc.y-=5;
break;

case Keyboard.DOWN :
my_mc.y+=5;
break;
}
}
امیدوارم مفید بوده باشه
این مبحث ادامه دارد...
 
آخرین ویرایش:

FLV

Member
چرا نمیشه از تابع مقداری رو برگردوند! void رو تغییر میدم ارور میده درحالیکه میخوام مقدار کلید فشار داره شده رو در یک متغییر بریزم و در تابع دیگری روش کار کنم که نمیشه، دوستان راحلی دارین؟
 

جدیدترین ارسال ها

بالا