Degiskenler
Bundan önceki makalelerimizde veri türlerini tamamladik, bundan sonrasinda ise bu türlerin derinlemesine kullanimina deginecegiz.
Degiskenler, temel olarak hafizada saklanan veriye erismek için kullanilan temsilcilerdir. Çok yaygin bir görüs oldugundan degiskenleri "Saklama Kabi" olarak düsünebiliriz. Her degiskenin bir adi, bir de degeri vardir örnegin;
isim = "Hakan";
isim degiskenin adi, "Hakan" ise bu degiskenin tasidigi degerdir. Anlasilabilecegi gibi bu degisken string bir degere sahiptir.
Degiskenler, daha önce ögrendigimiz veri türlerinin hepsini deger olarak alabilirler. Örnekleri inceleyiniz;
hedefClip = myMovieClip; //movie clip ornegini deger olarak almis
adi = "myName"; //string
sayi = 15; //sayi
giris = true; //boolean
Bir degiskenin tanimlanmasi sirasinda, tür uyumu, isimlendirme kurallari gibi dikkat edilmesi gereken hususlar vardir. Degisken isimlendirmesi, her ne kadar bizim zevkimize kalmis ise de bazi kurallar çerçevesindedir.
- Degisken adinda bosluk kullanilmaz.
kullanici adi = "Mesut Sasmaz"; //hatali tanimlama
- Degisken adlari, sayi ya da alfanumerik olmayan karakterlerle baslayamaz.
1_giris = 0; //hatali bildirim
%yuklenen = 100; //hatali bildirim
Bunlarin disinda, degisken isimlendirmesinde Türkçe karakterlerin kullanilmamasi da salik verilir.
Genel bir programlama aliskanligi olarak, degisken isimlendirmesinde ilk kelime küçük harfle baslar, takip eden her kelimenin ilk harfi büyük yazilarak devam edilir.
dosyaAdi = "myFile.txt";
kullaniciGirisIzni = false;
Degisken isimlendirmede dikkat edilecek son nokta da, Actionscript youmlayicisi için özel anlam ifade eden kelimelerin degisken adi olarak kullanilmamasidir. Zaten bu gibi bir kullanimda Actions paneli kelimeyi sizin için renklendirdiginden yanlis bir kullanim yaptiginizi anlayacaksiniz.
this = myMovieClip; //yanlis, this ozel bir kelime
import = ""; //hatali bildirim
Degiskenlerin ömürleri
DEGISKENLERIN ÖMÜRLERI ve FAALIYET ALANLARI
Her degisken, tanimlandigi bloga göre 3 gruba siniflandirilir;
- Local degiskenler
- Global degiskenler
- Timeline degiskenleri
Local Degiskenler:
Bu tip degiskenler, sadece tanimlandiklari blok içerisinde faaliyet gösterirler ve geçerlidirler. Burada blok teriminin açiklamasini yapmakta fayda görüyorum;
Actionscript söz diziminde { } küme parantezleri arasindaki ifadeler "blok" olarak adlandirilirlar.
if(durum)
{
//burasi if blogunun ici
}
Local degiskenler, faaliyet göstermesini istedigimiz blok içerisinde "var" deyimi ile tanimlanirlar. Hatirlayacaginiz üzere var deyiminin daha önceki açiklamasinda ileride farkli alanlarda kullanacagimizi belirtmistik.
function topla(a,b)
{
var toplam = a+b;
return toplam;
}
trace(toplam); //undefined
Yukaridaki örnekte, toplam degiskeni sadece "topla" fonksiyonu içerisinde faaliyet göstermektedir. Filminiz içerisinde herhangi bir noktada topla degiskenine erismek istediginizde "undefined" hatasi ile karsilasirsiniz.
Fonksiyonu asagidaki sekilde düzenleyip tekrar deneyelim;
function topla(a,b)
{
toplam = a+b;
return toplam;
}
topla(10,20); //fonksiyonu cagiriyoruz.
trace(toplam); //ciktisi 30 olacaktir.
Gördügünüz gibi, toplam degiskeni Local bir degisken olmaktan çikri. Bunun anlami var deyimi kullanilmadan tanimlanan degiskenlerin birer Timeline degiskeni haline gelecegidir.
Timeline Degiskenleri:
Timeline (zaman çizgisi) kavramindan söz edebilmek için, önce movieclip olmasi gereklidir. Her movieclip’ in kendisine ait bir zaman çizgisi vardir ve kendi içlerindeki komutlari bu zama çizgisinde isletirler. Bir movieclibin zaman çizgisi içerisinde "local olmayan" bir degisken tanimlandiginda, o degiskene kendi timeline’ i içerisinde dogrudan erisilebilir.
Local degiskenlerden farkli olarak, timeline degiskenlerine mutlak yol belirtmek kosulu ile kendi timelinelari disindan da erisilebilir. Asagidaki örnekleri inceleyiniz;
//myClip isminde bir movieclip’ in zaman cizgisinde
//1. frame icerisindeki kod.
timeLineDegiskeni = "myClip içerisinde faaliyet gösteriyorum";
trace(timeLineDegiskeni); //degiskenin degerini yazdirir
//root (ana zaman çizgisi) üzerindeki
//1. frame içerisinde bulunan kod.
trace(timeLineDegiskeni); //undefined
trace(myClip.timeLineDegiskeni); //degiskenin degerini yazdirir.
Mutlak ve göreceli yol bildirimlerine ileride detayli olarak deginecegimizden, simdilik bu örneklerde degiskenlerin faaliyet alanlarini anlamaniz yeterli olacaktir.
Global Degiskenler:
Global degiskenler, adindan da anlasilabilecegi gibi; uygulama içerisinde her hangi bir yerden direk olarak erisime sahip olan degiskenlerdir. Bir degiskeni global düzeyde tanimlamak için _global belirteci kullanilir.
_global.skor = 70; //root ta tanimlanmis bir global degisken
//myClip movieclibi içerisindeki kod
trace(skor); //ciktisi 70 olacaktir.
Yukaridaki örnekte, skor degiskeni ana zaman çizgisi üzerinde tanimlanmis bir global degiskendir. Tanimlandigi yer olarak ana zaman çizgisi üzerinde olsa da, global seviyede tanimlandigi için herhangi bir zaman çizgisinden de dogrudan erisilebilir.
DEGISKENLERIN TASIYACAGI VERIYI BELIRLEMEK
Pek çok programlama dilinden aliskin oldugumuz bir durum, degisken tanimlamasi sirasinda o degiskenin tasiyacagi verinin türünün de belirtilmesidir.
Visual Basic:
Dim i As Integer ’sayisal bir degisken
C - C++ - C#
int sayi; //sayisal bir degisken
vb..
Actionscript 2.0 tür bildirimi, sadece "Local" düzeydeki degiskenler için, yani var deyimi ile tanimlanan degiskenler için yapilmaktadir. Global ya da Timeline degiskenleri için tür bildirimi söz konusu degildir.
Actionscript 2.0 da tür bildirimi ":" iki nokta operatörü ile yapilir.
var isim:String = "Hakan"; //string bir degisken
//tur bildirimi yapiliyor
var sayi:Number = 10;
Yukaridaki tanimlamalardan sonra, asagidaki atamalari yapmaya kalktiginizda A.S derleyicisi tarafindan hata mesaji alacaksiniz.
isim = 20; //hata, string degiskene sayisal veri ataniyor
sayi = "10"; //hata
Tür bildirimi, Actionscript 2.0 içerisinde bulunan tüm hazir siniflar ve sizin olusturacaginiz özel siniflar için yapilabilir. Tür bildiriminin bir diger faydasi da Actions panelinin "intellisense" özelliginin kullanilabilmesine olanak saglamasidir. Tür bildirimi yaparak tanimladiginiz bir degiskenin metodlarina erismek istediginizde Actions paneli size mevcut metodlari listeleyecektir.
function abc(a:Number,b:String,c:kendiSinifim)
{
.
.
.
}
Sekilde de görülecegi gibi, parametre degiskenlerinde de tür bildirimi yapilabilmektedir.
Degiskenler ile ilgili bu yazimizda deginecegimiz son nokta da, delete deyimi. Uygulamanizda zaman zaman artik kullanilmasina gerek kalmayan degiskenler olabilir. Hafizanin verimli kullanilabilmesi için bu degiskenleri silmek oldukça mantikli bir çözüm olacaktir. delete deyimi, hafizada tanimli bir degiskeni silmek (hafizada kaldirmak) için kullanilir.
silinecekDegisken = "blablabla";
trace(silinecekDegiske); //blablabla ciktisini alacaksiniz.
delete silinecekDegisken; //degiskeni siliyoruz
trace(silinecekDegisken); //undefined.
