Son zamanlarda işlerin biraz yoğun olması sebebiyle üçüncü ders biraz gecikti ancak umarım bu süre içerisinde AS3 ve Sınıf Kavramı isimli yazımı okumuşsunuzdur.

Nihayet bu ders artık kodlama yapmaya başlayacağız, bu derse başlarken işin temeli olan AS3 ve Sınıf Kavramı isimli yazıda anlattığım sınıf, fonksiyon ve değişkenler hakkında bilgi sahibi olduğunuzu varsayıyorum. Bu yazıdan itibaren artık biraz hızlanmaya başlayacağız. Sıra sıra bu kod şu işe, öteki bu işe yarar tarzı değil de yeri geldikçe kodların ne için kullanıldığını, ne işe yaradıklarını anlatacağım. Hızlı gideceğim için anlamadığınız yeri tekrar okuyun, internette araştırın ya da çok üşengeçseniz aşağıya yorum olarak sorun :).

İlk olarak sahne boyutlarını 640×480 yapalım. Varsayılan değer olarak projeler bende 800×600 olarak oluşturuluyor. Üstteki menülerden Project>Properties’e tıklıyoruz. Açılan pencerede Dimensions kısmını 640×480 yapıyoruz. OK’e basıp pencereyi kapatalım.

Sonrasında FlashDevelop’un bizim için oluşturduğu Main.as isimli sınıf dosyasına bakalım. Buradaki init fonksiyonu şu an bizim için gereksiz. Bu fonksiyonu silelim. Ayrıca Main fonksiyonu içerisindeki kodları da silelim.

Sınıf kavramı isimli yazıda sıkça bahsettiğim Zombi.as isimli sınıfı oluşturalım. src klasörüne sağ tıklayıp Add>New Class ile yeni bir sınıf oluşturalım. Açılan pencerede Name kısmına Zombi yazıyoruz, hemen altındaki Base Class kısmı için sağ taraftaki Browse tuşuna basıp çıkan listeden flash.display.Sprite’ı seçiyoruz( Sprite diye yazmaya başlarsanız, yarısına gelmeden FlashDevelop istediğiniz sınıfı bulacaktır) OK’e basıp sınıfı oluşturuyoruz. Zombi.as isimli sınıf src klasörünün altında oluşturulacak ve bu sınıfın içeriği ekrana gelecek. Koda bakarsanız burada sınıf tanımı kısmında public class Zombi extends Sprite yazıyor. Yani Zombi isimli sınıfımız Sprite base class’ının extends(genişletilmiş) hali. Burada durup Base Class’tan biraz bahsedelim.

Base Class dediğimiz şey adından da anlaşılacağı gibi temel sınıf anlamında. Oluşturduğumuz sınıfımızın özelliklerini aldığı bir nevi üst sınıf gibi düşünebiliriz. Fazla kafa karıştırmadan anlatmak gerekirse; biz yeni oluşturduğumuz Zombi isimli sınıfımızda Sprite sınıfının bütün özelliklerini kullanabileceğiz. Üstüne kendi istediğimiz özellikleri ekleyeceğiz. extends kelimesinin anlamı da bu. Yine basitçe söylersek oluşturacağımız yeni sınıfımızın ekranda bir görüntüsü olacaksa şimdilik hep Sprite sınıfı tercih edeceğiz. Sprite sınıfının bir objeyi ekranda hareket ettirmek için bir çok fonksiyonu ve değişkeni mevcut. Mesela x,y konumu gibi ya da alpha, visible değerleri gibi. Bunlara yeri geldikçe değineceğiz. Sprite sınıfının özelliklerini görmek için oluşturduğumuz Zombi sınıfımızda constructor fonksiyon içerisindeki this. yazdığımızda FlashDevelop bu sınıfın bütün özelliklerini ve fonksiyonlarını gösterecektir. Şu an sınıfımız boş olduğu için sadece Sprite sınıfından aldığı özellikler ve fonksiyonlar gözükecek. Buradan ne gibi özellikleri olduğuna göz atabilirsiniz.

ders_ss

Şimdi Zombi sınıfımızın içine basitçe bir daire şekli çizelim. Bunun için Sprite sınıfının graphics fonksiyonlarını kullanacağız. Zombi sınıfının constructor fonksiyonu içerisindeki super() kodunu silelim. Buraya aşağıdaki gibi kod ekleyelim:

Kodu incelerseniz buradaki // ile başlayan turuncu renkteki satırlar koda eklediğimiz neyin ne olduğunu anlamamıza yarayan yorumlar. Basit bir uygulamada yorum eklemek çok önemli değildir ancak proje büyüdükçe ve proje üzerinde çalışan kişi sayısı arttıkça yorumlar daha da önemli olacaktır. Kodları daha iyi anlamanız için elimden geldiğince yorum eklemeye çalışacağım.

this. örneğinde olduğu gibi Zombi() fonksiyonunun içerisinde graphics. ya da this.graphics. yazarsanız Flash’ın dinamik çizim kodlarını görebilirsiniz. Buradaki fonksiyonların çoğunun ne işe yaradıklarını ingilizce anlamlarından çıkarabilirsiniz. Burada ayrıca FlashDevelop herhangi bir fonksiyonu seçtiğinizde size hangi değerlerin gerekli olduğunu gösterecektir. Mesela drawRect() daire çizme komutunu kullanırsanız x,y konumu, genişlik ve yükseklik diye 4 değer girmeniz gerekiyor. Ayrıca aşağıdaki resimdeki gibi her değerin ne için olduğu da hemen aşağısında ingilizce olarak açıklanıyor.

ders_ss2

 

Burada bir noktayı belirtmekte fayda var. Yukarıdaki resimde dikkat ederseniz her değer tanımlanmış ve virgülle ayrılmış. Bu değerlere fonksiyonun argümanları denir. Fonksiyonların argümanları için önceden belirlenmiş(default) değerler de tanımlayabiliyoruz ve bu sıklıkla kullanılan bir şeydir. Mesela aşağıdaki lineStyle() fonksiyonuna bir göz atalım:

ders_ss3

 

Dikkat ederseniz burada her argümandan sonra = konulup bir değer verilmiş. Eğer fonksiyonu çağırırken bu değerleri belirtmezsek varsayılan değer olarak bunlar kullanılacak. lineStyle() fonksiyonu için varsayılan kalınlık(thickness) null yani 0. Renk siyah, alfa değeri 1 vs. şeklinde olacak. Biz bu fonksiyonu kullanırken farklı değerler de atayabiliriz. Mesela varsayılan değer olarak çizgilerin kalınlığı 0’dır yani şu an çizim yapmaz program. İlk olarak kalınlığı belirleyip sonrasında moveTo() ve lineTo() komutlarıyla çizim yaparız.

Bu şekilde deneyerek çizim kodlarına aşinalık kazanabilirsiniz. Oyunlarda kodla çizim yapmak yerine çizim programlarında hazırlanmış vektör ya da bitmap çizimleri tercih edeceğiz ancak basit işlemler için ya da test aşamasında çizim kodlarını sıklıkla kullanıyoruz.

 

Bu derste son olarak oluşturduğumuz Zombi sınıfının bir nesne örneğini oluşturup ekrana ekleyelim ve dersi bitirelim. Main.as sınıfı içerisinde aşağıdaki değişiklikleri yapalım:

Ctrl+Enter ya da F5’e basarak projeyi test edebilirsiniz. Her şey tamamsa açılan Flash dosyasında ekranda küçük bir kırmızı daire görmeniz gerekiyor.

YENİ YAZILARDAN HABERDAR OLMAK İÇİN TWITTER’DA TAKİP EDİN. @MAPACARTA