Ogre Kütüphanesi Bölüm-10 Tanponlanmış Girdi-1
Geri Dön

Ogre Kütüphanesi Bölüm-10 Tanponlanmış Girdi-1

Anasayfa

A. TEORİK DERS


Önceki dersimizde tamponlanmamış girdi işlemini anlatmıştık. Tamponlanmamış girdi işleminde her kare için sorgulama şu şekilde oluyordu: “örneğin, I tuşuna basıldı mı?, J tuşuna basıldı mı?, K tuşuna basıldı mı?, L tuşuna basıldı mı? vb.” Bir işlem atadığımız her tuş için bir if kontrolü belirleyip her karede sorguluyorduk. Peki, tamponlanmış girdi de bu işlem nasıl olacak?

Tamponlanmış girdi işleminde sorgulama şu şekilde: “Herhangi bir tuşa basıldı mı?” Cevap evet ise: “Basılan tuşun kodunu al, kodun gösterdiği işlemi yerine getir. Döngüye devam et.” Cevap hayır ise: “Döngüyü çalıştırmaya devam et.”

Tamponlanmış girdinin bize sağladığı önemli kolaylıklardan biri, her tuş için bir değer atayıp, önceki karede o tuşa basılıp basılmadığını kontrol etmiyoruz. Önceki derste hatırlarsanız fareyeBasildi değeriyle kontrol ediyorduk.

OIS kütüphanesi, tıpkı FrameListener gibi döngülere sahiptir. Bu döngülerin genel adına dinleyiciler diyebiliriz. FrameListener, program çalıştığı süre boyunca sürekli kareleri dinliyordu. Bir tuşa basılırsa haberi oluyor, bize iletiyordu. OIS kütüphanesinin dinleyicileri ise KeyListener, tuş dinleyici ve MouseListener, fare dinleyicidir.

KeyListener’ın iki temel fonksiyonu vardır. Bunlar keyPressed ve keyReleased fonksiyonlarıdır. Bir tuşa basıldığında, tuşun kodu alınıp, keyPressed fonksiyonunda aranır. Tuş koduna, keyPressed fonksiyonunda atanan işlemler gerçekleştirilir. Tuştan parmağımızı kaldırdığımızda keyReleased fonksiyonu çağırılır. Aynı şekilde keyReleased fonksiyonunda tuş koduna hangi işlem atanmışsa o işlem yapılır.

MouseListener ise üç temel fonksiyon barındırır. Bunlar mouseMoved, mousePressed ve mouseReleased fonksiyonlarıdır. mousePressed ve mouseReleased fonksiyonları KeyListener’dakiler gibi farenin tuşlarının durumlarıyla ilgilenir. mouseMoved fonksiyonu ise fareyi hareket ettirdiğimiz zaman yapılacak olan işlemlerle ilgilenir.

Biz Ders5.h ve Ders5.cpp dosyalarında KeyListener ve MouseListener sınıflarının temel fonksiyonlarının hepsini tanımlayacağız. Ama hepsini kullanmayacağız. Sadece görmeniz açısından bu işlemi yaptık.

MouseListener’ın mouseMoved fonksiyonuyla ilgili dikkat etmemiz gereken bir nokta vardır. Fareyi hareket ettirdiğimizde OIS bize farenin son konumuyla yeni konumu arasındaki farkı verir. Şöyle açıklayalım. Fare ekranın X ekseninde 30. birimde duruyor olsun. Faremizi hareket ettirdik. Faremizin yeni konumu ekranın X ekseninde 45. birim oldu. Peki, bu durumu OIS nasıl girdi olarak gönderir. Fareyi hiç hareket ettirmediğimiz karelerde, X=0 olarak döner. Örneğimizdeki gibi fareyi hareket ettirdiğimizde X = (önceki karedeki konum) – (geçerli karedeki konum) şeklinde işlem yapar ve X değerini bize 15 birim olarak döndürür. Fareyi hareket ettirmezsek bir sonraki karede yine X=0 olur. OIS kütüphanesinin fare hareketiyle ilgili bize döndürdüğü X ve Y değerleri ekranın eksenlerini ifade eder.

Bu derste SN’leri oluştururken farklı bir yöntem izleyeceğiz. Bir SN oluşturup, oluşturduğumuz SN’nin bağlı olduğu SN’ye erişip, ona bağlı yeni bir çocuk(child) SN oluşturacağız. Bu ders boyunca, get tanımlaması olan fonksiyonları kullanacağız. Anlatınca pek açıklayıcı olmuyor, az sonra uygulayınca daha iyi anlarsınız.

Teorik dersi bitirmeden önce son bir şey daha belirtelim. OIS kütüphanesi JoystickListener sınıfı da barındırmaktadır. Ama biz Joystick’lerle ilgilenmeyeceğiz.



Anasayfa

Tüm Hakları Saklıdır. ©Arleone 2013-UstaDerslik