Plazma sayı 5, sayfa 58
Sayfanın metni

Sayfa 58

"Usta... ActionScript 3.0 üzerine pişmişinden OOP kes, az da MVC döküver..."

uint'in avantajı, negatif değerleri göstermek için bir bit harcamadığından daha büyük numaraları (int'in 2 katı) tanımlamakta kullanılabiliyor oluşu. Number'da olduğu gibi player bu değişkenin içerik tipini algılamaya çalışmadığından daha hızlı işlem yapabilecektir.

Erişim

Şimdiye kadar az-çok Flash ile uğraşan herkes aşağıdakine benzer bir kodu MovieClip'e kod ekleyerek bununla timeline'ın akışına müdahale etmişlerdir.

—parent.gotoAndStop(2);

Bunu AS3 ile çalıştırmaya kalktığınızda compiler tonla hata kusacaktır. Sebebi, AS3'ün artık class inheritance şeklinde çalışmamasıdır. AS2 prototype inheritance temelli olduğu için bu gibi pratik müdahaleler kolaylıkla yapılabiliyordu. AS3'e geçerken bunu kurallara uygun hale getirmek için

var myParent - parent; myParent.gotoAndStop(2);

şeklinde yazmamız, problemi çözecektir. Burada myParent ile yeni bir obje tanımlayarak erişimimizi onun üzerinden yapıyoruz. Elde etmek istediğimizi bu şekilde çok az değiştirerek OOP kurallarına tam bir uygunluk sağladığımızda AS3'e geçişte problemlerimiz de azalacaktır. Aynı yöntemle String ve fonksiyonlarda da değişken tipini önden tanımlamamız, daha hızlı ve hatasız çalışmamızı sağlayacaktır.

numOut numOut:int

15;

slowVar "myString"; fastVar:String "myString";

function slowFunc()

£ ) function fastFunc() :Number

)

return 100;

return 100;

Class

AS3'te görsel arabirim dahil her şey class üzerinden tanımlanmıştır. Flash'a ait temel class'lar, compile aşamasında otomatik olarak movie içine dahil edilir.

Class'ları oluştururken package ile oluşturacağımız metodları gruplayabiliriz:

package (

public class Circle

Temel class'lar dışında bir class kullandığınızda onu compiler'a tanıtmazsanız kullanamazsınız. Kullandığınız class'ları kullandığınız yerde import etmeniz -temel class'lardan olsalar da- temel bir alışkanlık olmalı. Bunun için import komutunu kullanıyoruz:

package ( import flash.display.MovieClip; public class Circle

(

Timeline üzerinde class import ederken birden fazla yerde aynı class'ı kullanacaksanız ya her kullanıldığı yerde import etmeniz ya da aşağıdaki gibi class'ı oluştururken erişim yolunu da tanımlamanız gerekiyor:

var myFoo:foo new macr.util.foo();

Public / Private

Günün birinde bir programcı, dünyadaki tüm edebiyatı, görsel sanatları, sayıları ve istatistikleri bir araya getiren sonsuz bir veritabanı oluşturdu. Sonra buna her türlü sorgulamayı kolaylıkla yapabileceği bir sorgulama sistemi tasarladı ve yazdı. Ondan sonra da çalışmasının meyvelerini tadabilmek için bilgisayarının karşısına oturdu.

3 dakika sonra başı ağrımaya başladı. 3 saat sonra rahatsızlık duymaya ve kötüleşmeye başladı. 3 gün sonra, tüm veritabanını imha etti. Sebebini sorduklarında "Bu sistem tüm verileri önüme getiriyor, her şeyi incelememi ve sorgulamamı sağlıyordu. Her türlü bilgiye erişebiliyor, her şeyi görebiliyordum, her yeri gezebiliyordum. Bu, bilinebilecek her şeyi öğrenmemem için bahanelerimi ortadan kaldırıyor. Yemek yiyemez, uyku uyuyamaz hale geldim. Tek yapabildiğim, bu sonsuz veritabanında gezinmekti. Artık dinlenebilirim."

Sonsuz açıklık ve erişilebilirlik, sağlıklı değildir. Kodunuza ait her şeyin açık ve erişilebilir olması, müdahalelerin yolunu açar. Sizin planladığınızın dışında müdahaleler de kodunuzun sağlıksız çalışmasına yol açar.

Public ile bir metodu ya da property'yi dışarıdan erişime açık tutmak istediğimizi belirtebiliriz. Bunun tersi Private özellikle class iç hesaplamalarında kullanılabilecek metod / property'ler içindir.

Klavyeyle gezinmek için ← ve → tuşları.