Flash ActionScript 3.0 İle klavye kontrolü

Bu uygulamamızda flash sahnesinde bulunan bir nesneyi klavye kullanarak hareket ettireceğiz. Bunu için nesnelerin koordinatları hakkında biraz bilgi vereceğim. Hepimiz matematikten az çok biliriz koordinat sistemini. Aşağıdaki bir görselle anlatacağım.

xy

Sahnenin sol üst köşesi koordinat sisteminde (0,0) noktasıdır. (x,y) koordinat sistemine göre burada bulanan bir nesne  x=0 ve y=0 koordinat değerindedir. Nesne sağa gittikçe x değeri, aşağı gittikçe ise y değeri artar. Sola gittikçe x değeri azalırken yukarı gittikçe de y değeri azalır. Bunu göz önüne alarak nesnelerin x ve y koordinatlarını değiştirdiğimizde nesne hareket eder. Bu bilgilerden sonra şimdi tasarıma geçelim.

Flash CS5 programını açarak actionscript 3 dosyası oluşturun. Sahneye çizim araç çubuğunu kullanarak bir şekil çizin. Ben sahneye bir daire çizdim.

Çizdiğiniz bu şekli film klibine çevireceğiz. Bunun için F8 tuşuna basın ve türü Film Klibi seçin.

sembolecevir

Burada dikkat edeceğimiz bir nokta var o da yukarıda işaretlediğim kızım. Kayıt kısmında 9 adet nokta verilmiş. Bunlardan hangisinie seçerseniz nesnenin XY koordinatları o noktaya göre belirlenir. Biz bu uygulamamızda koordinat merkezi olarak ortayı seçtik. İsterseniz farklı noktayı da seçebilirsiniz. Bu aşamada çokta bir önemi yok aslında. İleride yapacağımız uygulamalarda buna dikkat ederek işlerimizi yapacağız. Neyse geri derse dönelim. Tamamı tıkladıktan sonra nesnemiz artık film klibine dönüştü.

Şimdi nesnemizi seçiyoruz ve özellikler kısmında bulunan <Örnek Adı> kısmına nesnenin adını yazın. Nesneye ben TOP adını verdim. Artık kodlarını yazalım. Sahnede boş bir alanı tıklayın ve F9’a basın ve kodlama penceresini açın ve aşağıdaki kodları yazın.

stage.addEventListener(KeyboardEvent.KEY_DOWN, hareket);
//Bu satırla klavye dinleme dinleme işlemi başlatılır 
//ve klavyeden bir olay gelirse hareket fonksiyonu 
//çalıştırılır.
function hareket(event:KeyboardEvent) {
    //eğer basılı tutulan tuş sol yön tuşuysa nesneyi sola 
    //doğru hareket ettiriyoruz.
    if (event.keyCode==Keyboard.LEFT) {
        TOP.x -= 5; // top nesnesinin x koordinatını 5 
                    //eksiltir.
    }
    //eğer basılı tutulan tuş sağ yön tuşuysa nesneyi sağa 
    //doğru hareket ettiriyoruz.
    if (event.keyCode==Keyboard.RIGHT) {
        TOP.x += 5; // top nesnesinin x koordinatını 
                    //5 artırır.
    }
    //eğer basılı tutulan tuş yukarı yön tuşuysa nesneyi 
    //yukarı doğru hareket ettiriyoruz.
    if (event.keyCode==Keyboard.UP) {
        TOP.y -= 5; // top nesnesinin y koordinatını 5 
                    //eksiltir.
    }
    //eğer basılı tutulan tuş aşağı yön tuşuysa nesneyi 
    //aşağı doğru hareket ettiriyoruz.
    if (event.keyCode==Keyboard.DOWN) {
        TOP.y += 5; //top nesnesinin y koordinatını 5 
                    //artırır.
    }

	// TOP.y += 5; yerine TOP.x = TOP.x +5;şeklinde de
       // kullanılabilir.
}

Kodların açıklamaları yanlarına yazılmıştır. Kolay gelsin.

Örnek Uygulama
[kml_flashembed publishmethod=”static” fversion=”8.0.0″ movie=”http://www.mustafaakbal.com.tr/wp-content/uploads/2013/04/klavyeilehareket.swf” width=”470″ height=”350″ targetclass=”flashmovie”]

Get Adobe Flash player

[/kml_flashembed]

13 yorum

  • hatice kübra

    öncelikle örneğiniz için teşekkürler..emeğinize sağlık..peki sadece yön tuşları değil de klavyede ki her bir harfin kontrolünü nasıl sağlanır..ben bir klavye oyunu tasarlamak istiyorum ve örneğin klavyeden a tusuna basılınca sahnedeki a balonu patlayacak..ascii kodları geldi aklıma ama kodu bir türlü düzenleyemedim yardımcı olursanız çok sevinirim 🙂

  • Baran

    Merba oyunu yanlıs yapmıssınız duvardan gecerken hata vermiyo ama topları yiyebiliyor

  • Ahmet

    İyi günler dilerim öcelikle benim bir sorun olucaktı.Farz edin ekranda kutu adında bir nesne var bir butonu basılı tuttuğumda o nesnenin sola doğru hareket etmesini istiyorum bunu nasıl gerçekleştirebilrim.

    function SolaGit(event:MouseEvent):void
    {
    kutu.x-=2;

    } dugme1_btn.addEventListener(MouseEvent.MOUSE_CLICK,SolaGit);

    Mesela böyle yaptığımda nesne sola doğru sadece bir kere hareket edicek.Ama benim istediğim butonu basılı tutunca nesnenin sürekli sola hareketetmesini sağlamak.Yardımcı olucağınızı düşünüyorum şimdiden teşekkürler.(Not=Android uygulama için lazım)

  • hakan

    Merhaba hocam. Çok arayıp bir türlü cevabını bulamadığım bir sorum olacak size. Ben klavyeden örneğin ”A” tuşuna basınca kutuda ”DO” yazmasını, ”S” harfine basınca ”RE” yazmasını istiyorum ve bunu böyle bütün notaları kapsayacak şekilde devam ettirmek istiyorum. Bana bu konuda yardımcı olursanız çok sevinirim. Teşekkürler

  • mrb, klavyeye basınca sola yada sağa gitmek okeyde , flash ta bir butona basınca klavyeye basmışım gibi nasıl oluyor , yani ben butona basıcam ama klavyeden space e basmışım gibi algılayacak bu olabilirmi 1

    • mustafaakbal

      tam olarak anlayamadım ne demek istediğinizi? siz ekrana tuşlar çizeceksiniz onlara tıklayacaksınız ve ona göre mi işlem yapılacak?

  • irem

    lütfen ekleyin 2.0 ekleyin biz daha 2.0 dayız çünküüüü

    • mustafaakbal

      2.0 kullanımıyor artık o sebeple 2.0 kodları yok. hatta flash bile bitti. Anime’ye geçiş yapacağım inşallah

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir