آموزش keyboard event

شروع موضوع توسط mohammadbasri ‏22 فوریه 2011 در انجمن Action Script 3

  1. mohammadbasri

    mohammadbasri کاربر فعال

    ارسال‌ها:
    821
    تشکر شده:
    1,122
    امتیاز دستاورد:
    93
    تصمیم دارم هر چی که یاد میگیرم به اشتراک بذارم.
    در اینجا یکمی وارد مبحث 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;
    }
    }
     
    امیدوارم مفید بوده باشه
    این مبحث ادامه دارد...
     
    آخرین ویرایش: ‏22 فوریه 2011
    نوشته شده توسط mohammadbasri در ‏22 فوریه 2011
    daniel.tj، LiveTime، FLV و 8 نفر دیگر از این ارسال تشکر کرده اند.
  2. majid_a95

    majid_a95 Active Member

    ارسال‌ها:
    1,232
    تشکر شده:
    1,274
    امتیاز دستاورد:
    36
    اگه خسته نشی ادامه بدی عالیه :green:
    یا علی :rose:
     
    نوشته شده توسط majid_a95 در ‏23 فوریه 2011
    mohammadbasri از این پست تشکر کرده است.
  3. FLV

    FLV Member

    ارسال‌ها:
    35
    تشکر شده:
    26
    امتیاز دستاورد:
    6
    چرا نمیشه از تابع مقداری رو برگردوند! void رو تغییر میدم ارور میده درحالیکه میخوام مقدار کلید فشار داره شده رو در یک متغییر بریزم و در تابع دیگری روش کار کنم که نمیشه، دوستان راحلی دارین؟
     
    نوشته شده توسط FLV در ‏17 ژانویه 2013

به اشتراک بگذارید