21 Ocak 2012 Cumartesi

Ders-9 Oyunumuza Mouse Kontrolü Ekliyelim

Bu dersimizde de, bir önceki dersteki örnegi degistirecegiz.Topun kontrolünü bu sefer fareyle degil de, klavye ile saglayacagiz.Böylece, klavyeyle kontrol etmeyi nasil yapacagimizi ögrenmis olacagiz.Simdi öncelikle eski kodlarimizdaki fareyle ilgili kodlari silelim(asagidaki kirmizi yaziyla yazilmis kisimlari).

stage.addEventListener(Event.ENTER_FRAME,oyun);

Mouse.hide();

function oyun(event:Event):void{

nokta.x=mouseX;
nokta.y=mouseY;


if(nokta.hitTestObject(ust_duvar) || nokta.hitTestObject(alt_duvar)){
nokta.x=13;
nokta.y=177;
}
}




Sonra asagidaki mavi yaziyla yazilmis yeni kodlari yazin.





stage.addEventListener(Event.ENTER_FRAME,oyun);
stage.addEventListener(KeyboardEvent.KEY_DOWN,tusa_basildi);
stage.addEventListener(KeyboardEvent.KEY_UP,tustan_cekildi);


var sag:Boolean=false;
var sol:Boolean=false;
var yukari:Boolean=false;
var asagi:Boolean=false;



function tusa_basildi(event:KeyboardEvent):void{

if(event.keyCode == 39){
sag=true
}
if(event.keyCode == 37){
sol=true
}
if(event.keyCode == 38){
yukari=true
}
if(event.keyCode == 40){
asagi=true
}
}


function tustan_cekildi(event:KeyboardEvent):void{

if(event.keyCode == 39){
sag=false
}
if(event.keyCode == 37){
sol=false
}
if(event.keyCode == 38){
yukari=false
}
if(event.keyCode == 40){
asagi=false
}
}




function oyun(event:Event):void{

if(sag){
nokta.x+=3;
}
if(sol){
nokta.x-=3;
}
if(yukari){
nokta.y-=3;
}
if(asagi){
nokta.y+=3;
}


if(nokta.hitTestObject(ust_duvar) || nokta.hitTestObject(alt_duvar)){
nokta.x=13;
nokta.y=177;
}
}





Ardindan “Crtl+Enter” yapip örnegi deneyin.Bu sefer topu, fareyle degil de, klavyedeki ok tuslariyla hareket ettirdigimizi göreceksiniz.Simdi yazdigimiz kodlari açiklayalim.

stage.addEventListener(KeyboardEvent.KEY_DOWN,tusa_basildi);
stage.addEventListener(KeyboardEvent.KEY_UP,tustan_cekildi);


Yukaridaki kodla biz: “Klavyedeki bir tusa basilmasi durumda, “tusa_basildi()” fonksiyonunun çalismasini sagladik.Parmagin tustan çekilmesi durumunda ise “tustan_cekildi()” fonksiyonun çalismasini sagladik.Simdi bu fonksiyonlarin içerigini anlatayim."tusa_basildi()” fonksiyonu çalismaya basladiginda içinde tanimladigimiz

if(event.keyCode == 39){
sag=true
}


koduyla “eger klavyedeki basilan tus, “sag ok” tusuysa “sag” degiskenin degerini “true yap” dedik .oyun() fonksiyonu, bildigimiz gibi örnek açilir açilmaz durmadan çalisan fonksiyondur.Bu fonksiyonun içerisine, “if(sag){ nokta.x+=3; }” kodunu ekledigimiz için, “sag” degiskeni “true” olur olmaz, bunun içindeki kod devreye girecek, “nokta” nesnesinin x düzlemdeki (yatay) koordinati 3 piksel sürekli artacaktir.Böylece nokta sag tarafa dogru hareket edecektir.

tustan_cekildi()” fonksiyonu da, parmagimizi tustan çektigimiz zaman çalisacak.Ve parmagimizi çektigimiz tus, sag ok tusuysa ( “if(event.keyCode == 39){ sag=false }” ) sag degiskeninin degerini “false” yap dedik.Böylece degisken false olacak,haliyle nokta sag tarafa hareket etmesi duracaktir.Ayni sekilde tüm “ok tuslarina” bu sekilde uyguladik ve örnegimizi olusturmus olduk.Örnegimizi “Crtl+Enter” yaparak deneyebilirsiniz.

Simdi size, “event.keyCode==39”daki “39(sag ok tusu)” gibi, klavyedeki birkaç tuslarin rakamsal kodlarini göstereyim,bunlari oyun yaparken kullanabilirsiniz:

Sag ok tusu= 39
Sol ok tusu= 37
Yukari ok tusu= 38
Asagi ok tusu= 40

Numpad 8= 104
Numpad 2= 98
Numpad 4= 100
Numpad 6=102
Numpad 5= 101

Enter tusu= 13
Esc tusu= 27
Backspace tusu= 8
Tab tusu= 9
Shift tusu= 16
Caps Lock tusu= 20
Spacebar tusu= 32
Delete tusu= 46

F1 tusu= 112
F2 tusu= 113
F3 tusu= 114
F4 tusu= 115
F5 tusu= 116
F6 tusu=117

A tusu= 65
C tusu= 67
D tusu= 68
S tusu= 82
W tusu= 87
Q tusu= 81
E tusu= 69
Z tusu= 90
X tusu= 88

3 yorum:

  1. hocam bu programda bir hata var ama çözemedim, hittestobject calismiyor,nokta duvara deyince geri yerine dönmüyor.daha doğrusu duvar diye bise gormuyor ustunden gecip gidiyor,mouse la yaptıgın örneği denedim onda duvar çarpıyor.ne gibi bi sorun var sence yardımcı olabilirmisin?

    YanıtlaSil
  2. s tuşu kodu r tuşu yapıyor

    YanıtlaSil