1. Koşullar
ActionScript 3.0’te program akışını denetlemek için kullanabileceğiniz if…else , if..else if ve switch olmak üzere üç temel koşul deyimi bulunmaktadır.
if..else
if..else deyimi, bir koşulu test etmenizi sağlar. Koşul sağlanırsa bir kod bloğu sağlanmazsa alternatif bir kod bloğu çalışır. Örneğin, aşağıdaki kod, j değerinin 20 değerini aşıp aşmadığını test eder, aşıyorsa bir trace() işlevi oluşturur veya aşmıyorsa farklı bir trace() işlevi oluşturur:
var j:int;
if (j > 20)
{
trace("j, yirmiden büyük.");
}
else
{
trace("j, yirmiye küçük eşit.");
}
Alternatif kod bloğu çalıştırmak istemiyorsanız, if deyimini else deyimi olmadan da kullanabilirsiniz:
var i:int=30
if (i > 20)
{
trace("i, yirmiden büyüktür");
}
if..else if
if..else if deyimi birden fazla koşulu test etmenizi sağlar. Örneğin, aşağıdaki kod yalnızca i değerinin 20 değerini aşıp aşmadığını değil, aynı zamanda i değerinin negatif olup olmadığını da test eder:
if (i > 20)
{
trace("i is > 20");
}
else if (i < 0)
{
trace("i, negatif");
}
Bir if veya else deyiminden sonra yalnızca tek bir deyim geliyorsa, deyimin ayraç içine alınması gerekmez. Örneğin, aşağıdaki kod ayraç kullanılmayabilir, kod çalışacaktır. Ancak ayraç bulunmayan bir koşul deyimine daha sonra if deyimleri eklenirse beklenmedik davranışlar oluşabileceğinden her zaman ayraç kullanmanız önerilir.
if (i > 0)
trace("i, pozitif");
else if (i < 0)
trace("i, negatif");
else
trace("i, sıfıra eşit");
switch
Aynı koşul ifadesine bağlı çok sayıda durum söz konusu ile iç içe uzun if..else if deyimleri yerine switch tercih edilir. uzun if..else if deyimleri değimlerine göre daha kolay okunabilir. switch deyimi, bir Boolean değerinin koşulunu test etmek yerine, hangi kod bloğunun çalıştırılacağını belirlemek için sayı veya string (dize) olan bir değer kullanır. Kod blokları bir case deyimiyle başlar ve bir break deyimiyle sona erer. Örneğin, aşağıdaki switch deyimi, Date.getDay() yönteminin döndürdüğü gün sayısını esas alarak haftanın gününü yazdırır:
var tarih:Date = new Date();
var gun:uint = tarih.getDay(); // . getDay() haftanın kaçıncı günü olduğunu bildirir
switch (gun)
{
case 0 :
trace("Pazar");
break;
case 1 :
trace("Pzartesi");
break;
case 2 :
trace("Salı");
break;
case 3 :
trace("Çarşamba");
break;
case 4 :
trace("Perşembe");
break;
case 5 :
trace("Cuma");
break;
case 6 :
trace("Cumatesi");
break;
default :
trace("Aralık dışı");
break;
}
2. Do ngu ler
Döngü deyimleri, bir değerler veya değişkenler dizisi kullanarak art arda belirli bir kod bloğu çalıştırmanıza olanak sağlar. Actinscript 3’de döngü ifadesi olarak for, for.. in, for each..in, while ve do..while kullanılır.
for
for döngüsü, belirli bir değer aralığı için bir değişkeni yineleyerek belirli bir kod satırının tekrar tekrar çalıştırılmasını sağlar. for deyiminde üç ifade sağlaması gerekir: başlangıç değerini belirleyen bir değişken, döngünün ne zaman sona ereceğini belirleyen bir koşul deyimi ve her döngüyle değişkenin değerini değiştiren bir ifade.
Örneğin, aşağıdaki kod beş defa döngü sağlar. i değişkeninin değeri 0'da başlar ve 4'te sona erer, çıktı da her biri kendi satırında olan 0 ile 4 arasındaki sayılar olur.
var i:int;
for (i = 0; i < 5; i++)
{
trace(i);
}
//Output
// 0
// 1
// 2
// 3
// 4
for..in
for..in döngüsü, bir dizi veya object türündeki bir nesneyle işlem yaparken kullanılır. Örneğin bir dizinin içindeki değerlerle işlem yapmak için aşağıdaki kod parçası kullanılır.
var yeniDizi:Array = ["bir","iki","üç"];
for (var k:String in yeniDizi)
{
trace(yeniDizi[k]);
}
// Output:
// bir
// iki
// üç
Object nesnesi içinde istenilen türde bilgi saklayabilen nesnelerdir. Object nesnesi iki şekilde tanımlana bilir:
var yeniNesne:Object=new Object();
yeniNesne.adet = 5;
yeniNesne.renk = "mavi";
yeniNesne.no = 1234;
ya da
var yeniNesne:Object={adet:5, renk:"mavi", no:1234};
for..in Örneği
var yeniNesne:Object={adet:5, renk:"mavi", no:1234};
for (var i:String in yeniNesne)
{
trace(yeniNesne[i]);
}
// output:
// 1234
// mavi
// 5
for..in döngüsünde nesne özellikleri belirli bir sırada tutulmaz, bu nedende özellikler her çalışmada farklı sıralarda listelenebilir.
Bir nesne, kullanıcı tanımlı sınıfın bir örneğiyse, sınıf dinamik bir sınıf olmadığı sürece nesnenin özelliklerini yineleyemezsiniz. Dinamik sınıf örnekleriyle de, yalnızca dinamik olarak eklenen özellikleri yineleyebilirsiniz.
for each..in
for each..in döngüsünün, for..in döngüsünden iki farkı bulunmaktadır. İlki for each..in deyiminde döngü içerisinde oluşturulan değişkenin veri tipinin belirtilmemesidir, for..in döngüsünde ise belirtilmek zorundadır. Eğer bir dizi veya object nesnesinin içindeki verilerin tipi bilinmiyorsa for each..in tercih edilmelidir. İkincisi ise for each.. in özelliğin adı yerine özelliğin kendisi tarafından tutulan değeri döndürür. Aşağıdaki örneği inceleyiniz.
var yeniNesne:Object={ad: "Ozlem", soyad:"Ozan", no:1234};
for each (var i in yeniNesne)
{
trace(i);
}
// Output:
// Ozlem
// Ozan
// 1234
/* i değişkenine herhangi bir veri türü atanmaz.*/
/* özelliğin tarafından tutulan değeri döndürür*/
for (var i:String in yeniNesne)
{
trace(i);
}
// Output:
// ad
// soyad
// no
/* i değişkenine veri türü atanmak zorundadır.*/
/* özelliğin adını döndürür*/
/*Eğer object nesnesinin her bir özelliğine ait değerler for..in ile alınmak isteniyorsa yeniNesne[i] kullanılmalıdır. */
for (var i:String in yeniNesne)
{
trace(yeniNesne[i]);
}
// Output:
// Ozlem
// Ozan
// 1234
Örnek 2:
var dizi:Array = [1,"araba",2,"ev"];
for each (var icerik in dizi)
{ trace(icerik);
}
// Output:
// 1
// araba
// 2
// ev
Bir nesne mühürlenmiş bir sınıf örneğiyse, o nesnenin özelliklerini bu döngü içerisinde kullanılamaz. Dinamik sınıf örneklerinin sabit özellikleri de bu döngü içerisinde kullanılamaz.
while
while döngüsü, koşul true olduğu sürece yinelenen if deyimine benzer. Ancak if deyiminde ifade true ise kod bir kere çalışır, while da ise true olduğu sürece çalışır. Örnek 1'de output ekranında 5 yazarken, örnek 2 sonsuz döngüye girer.
Örnek 1
var i:int=5
if (i==5)
{trace (i)}
// Output: 5
Örnek 2
var i:int=5
while (i==5)
{trace (i)}
/* Sonsuz döngüye girdiğinden Output: Error #1502: A script has executed for longer than the default timeout period of 15 seconds. at Untitled_fla::MainTimeline/frame1() */
Örneğin, aşağıdaki kod, for döngüsü örneğiyle aynı çıktıyı oluşturur:
var sayac:int = 0;
while (sayac < 5)
{
trace(sayac);
sayac ++;
}
// output
// 0
// 1
// 2
// 3
// 4
for döngüsü yerine while döngüsü kullanılmasının bir dezavantajı, sonsuz döngülerin while döngüleriyle daha kolay yazılmasıdır. Sayac değişkenini artıran ifadeyi çıkarırsanız, for döngüsü örneği derleme yapmaz ancak bu adımı çıkarırsanız while döngüsü örneği derleme yapar. i değerini artıran ifade olmadan döngü sonsuz döngü olur.
do..while
do..while döngüsü, kod bloğu çalıştırıldıktan sonra koşul denetlendiğinden, kod bloğunun en az bir defa çalıştırılmasını garantileyen bir while döngüsüdür.
do..while döngüsü, kod bloğu çalıştırıldıktan sonra koşul denetlemektedir. Dolayısıyla kod bloğu en az bir defa çalışır, sonra koşul denetlenir. Koşul sağlanıyorsa kod tekrarlanmaya devam eder, sağlanmıyorsa tekrarlanmaz. Aşağıdaki kod, koşul karşılanmasa da çıktı oluşturan basit do..while döngüsü örneğini göstermektedir:
Örnek 1
var i:int = 6;
do
{
trace(i);
i++;
} while (i < 4);
// output
// 6
Örnek 2
var i:int = 0;
do
{
trace(i);
i++;
} while (i < 4);
// output
// 0
// 1
// 2
// 3
Konu Sonu Soruları
Koşullar ve Döngüler
1. switch ve if..else if arasındaki temel fark nedir?
a. if..else if break değerini kullanırken switch case değerini kullanır.
b. if..else if ile sadece bir koşul switch ile birden fazla koşul test edilir,
c. switch sadece Boolean değerlerle çalışır, if..else if her değerle çalışır.
d. if..else if sadece Boolean değerlerle çalışır, switch her değerle çalışır.
2. Aşağıdakilerden hangisinin sonsuz döngüye girme olasılığı daha yüksektir?
a. for..in
b. for each..in
c. for
d. while
3. Aşağıdaki kod bloğunun output ekranındaki çıktısı nedir?
var i:int = 10;
do
{
trace(i);
i++;
} while (i < = 4);
Bir cevap seçin.
a. 3
b. 1, 2, 3, 4
c. 4
d. 5
4. İçerisinde hangi tür veri barındırdığını bilmediğimiz bir dizi ile döngü oluşturmak istiyouruz. Aşağıdakilerden hangisini kullanmalıyız?
a. for each..in
b. for..in
c. while
d. for
5. Aşağıdaki kod parçası çalıştığında output ekranında aşağıdakilerden hangisi yazar.
var yeniNesne:Object={ad: "Ozlem"};
for (var i:String in yeniNesne)
{
trace(i);
}
Bir cevap seçin.
a. ad:Ozlem
b. Ozlem
c. ad: "Ozlem"
d. ad
28 Mayıs 2013 Salı
events
1
1. Olaylarla ilgili Temel Kavramlar
Event (olay), bir programda bir şeyler gerçekleştiğinde oluşur. Bir fare tıklaması, bir videonun yüklenmesi veya bir metin alanında yapılan değişiklik birer olaydır. ActionScript 3.0, bu tür olaylar gerçekleştiğinde hangi işlevlerin yerine getirileceğine de karar verir. Örneğin bir butona tıklandığında, ekrana uyarı yazdıran bir kod parçasının çalışması istenebilir. Actionscript 3.0’da “olay”larla ilgi olarak aşağıdaki kavramların bilinmesi gerekir:
Olay türü (event type)
Alay adı (event name)
Olay dinleyicileri (event listeners)
Olay dağıtımı (event dispatch)
Olay nesnesi (event object)
Olay hedefi (event target)
ActionScript 3.0’daki olay türlerine örnek olarak aşağıdakiler verilebilir:
MouseEvent: Fare olayları
KeyboardEvent: Klavye olayları
TimerEvent: Zamanlama olayları
SoundEvent: Sesle ilgili olaylar
TextEvent: Metin alanı ile ilgili olaylar
ActivityEvent: Kamera ve mikrofonun aktif ve pasif olmasıyla ilgi olaylar
ContextMenuEvent: Context Menu ile ilgili olayalar
DataEvent: Veri iletimi ile ilgili olaylar.
System events: Sistemin otomatik olarak tetiklediği olaylar, hata mesajları vs…
Olayların tümü events sınıfından türetilmektedir.
ActionScript'de her türlü olay String bir adla gösterilir. Örneğin fareye tıklama olayının adı (event name) "CLICK"tir. Klavyeden bir tuşa basma olayının adı “KEY_DOWN”dır.
ActionScript, olayları gerçekleştirmek için olay dinleyicileri (event listeners) kullanır (olay işleyici de denmektedir). Bir olay dinleyici, belirtilen olay meydana geldiğinde istenen fonksiyonu çağırır.
Olay dinleyicilerini çalıştırma işlemine olay dağıtımı (event dispatch) denir. Olay dinleyiciler EventDispatcher sınıfının bir örneğidir. EventDispatcher sınıfı olay dinleyicileri eklememek için addEventListener() kaldırmak removeEventListener () metotlarını kullanır.
Bir olay dağıtımı başladığında ActionScript, olayları gösteren olay nesnesi (event object) oluşturur. Olay nesnesi, her zaman Event sınıfının bir örneği veya bu sınıftan türeyen bir
2
nesnedir. Her olay dinleyici, olay nesnelerinin değişkenlerini, olayla ilgili bilgilere ulaşmak için kullanabilir.
Her bir olay dağıtımı bir olay hedefine (event target) sahiptir. Olay hedefi, olayın hangi nesneye ait olduğunu belirtir. Örneğin farenin tıklandığı buton nesnesi hedef nesnedir. Tüm olay hedef nesneleri EventDispatcher sınıfının bir örneğidir.
Events (olaylar) sınıfının alt sınıflarını aşağıdaki bağlantıdan öğrenebilirsiniz:
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/events/package-detail.html
Fare Olayları
ActionScript 3.0'da 10 tane fare olayı bulunmaktadır.
CLICK: Tıklama olayı
DOUBLE_CLICK: Çift tıklama olayı (Bu olay için objenin doubleClickEnabled özelliğinin true olması gerekmektedir.)
MOUSE_DOWN: Farenin sol tuşuna basılı tutma olayı
MOUSE_MOVE: Farenin hareket etmesi
MOUSE_OUT: Farenin objenin üzerinden çıkması olayı
MOUSE_OVER: Farenin objenin üzerinde olması
MOUSE_UP: Fareye basılı tutup bırakma olayı
MOUSE_WHEEL: Fare tekerleği ile gerçekleşen olaylar
ROLL_OUT: Farenin butonun üzerinden çıkması olayı
ROLL_OVER: Farenin butonun üzerinde olması
ÖRNEK: mc1 nesnesini tıklayınca büyümesi
mc1.addEventListener(MouseEvent.CLICK, buyut);
function buyut(e:MouseEvent):void
{
mc1.scaleX = 1.5;
mc1.scaleY = 1.5;
}
Klavye Olayları
ActionScript 3.0'da 2 temel klavye olayı bulunmaktadır.
KEY_DOWN: Tuşa basma olayı
3
KEY_UP: Tuşu bırakma olayı
ÖRNEK
import flash.events.KeyboardEvent;
stage.addEventListener(KeyboardEvent.KEY_DOWN,sagaGit);
function sagaGit(a:KeyboardEvent):void
{
trace(a.keyCode);
if (a.keyCode == 39)
{
mc1.x += 10;
}
else if (a.keyCode==37)
{
mc1.x -= 10;
}
else if (a.keyCode==38)
{
mc1.y -= 10;
}
else if (a.keyCode==40)
{
mc1.y += 10;
}
}
stage.addEventListener(KeyboardEvent.KEY_DOWN,yuksel);
stage.addEventListener(KeyboardEvent.KEY_UP, alcal);
function yuksel(b:KeyboardEvent):void
{
if (b.keyCode == 65)
{
mc1.y -= 100;
}
}
function alcal(c:KeyboardEvent):void
{
if (c.keyCode == 65)
{
mc1.y += 100;
}
}
4
2. Olay Dinleyicileri (Event Listeners)
Bir nesneye (olay nesnesi) olay dinleyici eklemek için aşağıdaki yazım kuralı kullanılır:
olayNesnesi.addEventListener(Olayın_Türü.Olayın_Adı, fonksiyonAdı)
Örneğin:
buton.addEventListener(MouseEvent.CLICK, kareAl);
ActionScript'de bir olaya cevap vermek için ilk önce Olay türü (event type) ve ismine (event name) karar verilmelidir. Daha sonra ilgili nesneye olay dinleyici (EventListener) eklenmelidir. Örneğin
MouseEvent.CLICK
Event.COMPLETE
Tüm olay dinleyicileri, "void" dönüş tipine sahiptir.
Bir olay dinleyici aşağıdaki parametreleri alır:
addEventListener (type, listener,useCapture,priority,useWeakReference)
Fonksiyon tanımı ve parametleri:
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
type: olay türü
listener: tetiklenecek fonksiyon
useCapture: (yakala) DOM ağaç yapısında olaylar, kökten (document nesnesinden) hedef elemente doğru sevk edilir ve tekrar document nesnesine geri döner. Bu sevk işlemi sırasında olayın gerçekleştiği elemente ulaşana kadar geçen bütün elementlerde, ilgili olay için bir olay dinleyicisi mevcutsa bu elementlere de olayın gerçekleştiği bildirilir.Yakala seçeneği burada olayın hedef elemente giderken mi yoksa document nesnesine dönerken mi yakalanacağını belirler. true hedefe giderken, false ise dönerken yakalanacağını belirtir.*/
priority: (Çalışma önceliği). "priority" parametresi integer değer almaktadır. Bu değer ne kadar büyükse öncelikte o kadar fazladır. Örneğin "priority" parametresi 1 olan olay dinleyici, "priority" parametresi 0 olan olay dinleyiciden daha önceliklidir.
5
useWeakReference: (Zayıf referans kullan) useWeakReference parametresi false ise yani true olarak ayarlı değilse olay dinleyicileri otomatik olarak bellekten kaldırılmaz
3. Hedef Nesneye (Target Object) Erişme
Hedef nesneye erişim, olay dinleyici eklediğiniz nesnenin özelliklerine erişmek için kullanılır.
Her olay dağıtımı sırasında olay nesnesi, olay dinleyicinin "target" özelliği ile hedef nesneye ulaşımını sağlar.
Şu örneği inceleyelim;
function tikla(e:MouseEvent):void
{
(e.target).alpha=0.2;
trace(e.target); // [object SimpleButton]
}
btn.addEventListener(MouseEvent.CLICK, tikla)
Örnekte, (e.target).alpha=0.2 satırında (e.target) tıklanan butonu gösterirken "btn" adlı butonun yerine kullanılmıştır. trace(e.target) satırında ise hedef nesnenin SimpleButton nesnesi olduğu gösterilmektedir.
Olay Dinleyiciye Kayıtlı Nesneye Erişim
Eğer bir nesne veya sembol aşağıda gösterildiği gibi içiçe nesne veya sembollerden oluşuyorsa target ifadesinin yanı sıra"currentTarget" özelliği de kullanılır.
Eğer bir nesne veya sembol aşağıda gösterildiği gibi içiçe nesne veya sembollerden oluşuyorsa target ifadesinin yanı sıra currentTarget özelliği de kullanılır. Aşağıdaki örnekte instance name'i mc olan sembolün (nesnenin) içinde instance name'i btn olan buton ve instance name'i mc2 MovieClip bulumaktadır. Anlaşılır olması için sembollererin kütüphanedeki isimleri ile durum adları (instance name) aynı olarak verilmşitir.
6
Aşağıdaki kodi ile mc sembolüne (nesnesine) tikla olay dinleyicisi eklenir.
7
mc'ye tıklandığında target özelliği btn veya mc2'ye tıklandığında currentTarget özelliği çalışır.
mc’ye tıklandığında output ekranında
// mc // mc
Mc2’ye tıklandığında output ekranında
// mc // mc2
btn’ye tıklandığında output ekranında
// mc // btn
görünütülenir.
8
Varsayılan Olay Davranışını (Default Event Behaviour) Engellemek
Bir SimpleButonuna basıldığında, varsayılan olarak butonun "down" durumundaki grafik durumu görünür. INPUT özelliğine sahip TextField nesnesine metin girildiğinde klavyeden basılan karakter ekranda varsayılan olarak görülür. Bazen programcı bu nesnelerin kendilerine ait varsayılan davranışlarını göstermesini istemez. Bunun için de olayın kaydedildiği olay dinleyicisinde, Event sınıfından preventDefault() metoduna ihtiyaç vardır.
Aşağıdaki "GorunmezYazi.as" dosyasında da bir TextField alanına, klavyeden girilen karakterlerin ekranda görünmesi engellenerek yazılan her karakter için ekrana "o" karakterini basması istenmektedir.
package
{
import flash.display.*;
import flash.text.*;
import flash.events.*;
public class GorunmezYazi extends Sprite
{
private var yazi:TextField;
public function GorunmezYazi( )
{
yazi = new TextField( );
yazi.border = true;
yazi.type = TextFieldType.INPUT;
addChild(yazi);
//TextField nesnesi oluşturuldu ve ekrana taşındı
yazi.addEventListener(TextEvent.TEXT_INPUT, yaziListener);
}
private function yaziListener(e:TextEvent):void
//TextEvent.TEXT_INPUT olayı gerçekleştiğinde olay dinleyici çalıştı
{
trace("Yazılan metin " + e.text);
// Kullanıcının TextField alanına girdiği karakterler Output
// ekranında görüntülendi
e.preventDefault( );
// Kullanıcının ekrana girdiği yazıların görünümü engellendi
9
yazi.appendText("o");
// Klavyeden her yazı yazıldığında TextField alanında "o"
// karakteri göründü
}
}
}
10
4. Olay Dinleyici O ncelig i (Event Listener Priority)
Bir olay türüne, birden fazla olay dinleyicisini kaydetmek mümkündür. Normalde birden fazla olay dinleyici bir olaya kaydedilmişse, program akışı içinde önce yazılan olay dinleyicisi çalıştırılmaktadır. Aşağıdaki "OncelikBelirleme.as" adlı dosyada "buton" adlı nesne, "sira1" ve "sira2" adlı iki olay dinleyicisine kayıtlıdır. Eğer program içinde herhangi bir öncelik sırası belirtilmeseydi, önce "sira1" adlı olay dinleyicisi çalıştırılacaktı ancak aşağıdaki kod satırlarında öncelik belirtildiği için normal akışın tersine önce "sira2" olay dinleyicisi çalışmaktadır.
Olay dinleyicinin önceliğini değiştirmek için, addEventListener() metodundaki "priority" parametresi ayarlanmalıdır.
addEventListener(type, listener, useCapture, priority, useWeakReference)
buton.addEventListener(MouseEvent.CLICK, sira2,false,1);
"priority" parametresi integer değer almaktadır. Bu değer ne kadar büyükse öncelikte o kadar fazladır. Örneğin "priority" parametresi 1 olan olay dinleyici, "priority" parametresi 0 olan olay dinleyiciden daha önceliklidir. Aynı "priority" parametresine sahip olay dinleyicileri varsa, öncelik program akışı içinde önce yazılan olay dinleyicidedir. Varsayılan olarak "priority" parametresi tüm olay dinleyiciler için 0'dır. Böyle olunca da program akışındaki dinleyicinin yazılma sırası önceliği belirlemektedir.
/* useCapture: (yakala) DOM ağaç yapısında olaylar, kökten (document nesnesinden) hedef elemente doğru sevk edilir ve tekrar document nesnesine geri döner. Bu sevk işlemi sırasında olayın gerçekleştiği elemente ulaşana kadar geçen bütün elementlerde, ilgili olay için bir olay dinleyicisi mevcutsa bu elementlere de olayın gerçekleştiği bildirilir.Yakala seçeneği burada olayın hedef elemente giderken mi yoksa document nesnesine dönerken mi yakalanacağını belirler. true hedefe giderken, false ise dönerken yakalanacağını belirtir.*/
11
package
{
import flash.display.*;
import flash.events.*;
public class OncelikBelirleme extends Sprite
{
public function OncelikBelirleme( )
{
var buton:Button=new Button();
addChild(buton);
buton.addEventListener(MouseEvent.CLICK, sira1,false,0);
buton.addEventListener(MouseEvent.CLICK, sira2,false,1);
}
private function sira1(e:Event):void
{
trace("sira1 sonra gerçekleşti");
}
private function sira2(e:Event):void
{
trace("sira2 önce gerçekleşti");
}
}
}
// Program Ekran Çıktısı
// sira2 önce gerçekleşti
// sira1 sonra gerçekleşti
12
Zayıf Dinleyici Referansı (Weak Listener References)
ActionScript 3.0, zayıf ve kuvvetli bellek referansı diye nesneler üzerinde bellek yönetimi gerçekleştirmektedir. Genellikle bir nesneye yönelik belirli bir referans yoksa, nesne bellek çöp toplayıcılar tarafından toplanarak belleğin gereksiz kullanımı önlenmektedir.
addEventListener() metodundaki "useWeakReference" özelliği "true" yapılarak olay dağıtıcılar ve olay dinleyiciler arasında zayıf bir bağlantı kurulmaktadır. Yani olay dağıtıcılar dinlenirken eğer olay dinleyici silinmişse, zayıf referans değerinin "true" olması ile bellek çöp toplayıcılara izin verilmiş olur. Böylelikle kayıttan çıkarılması unutulan olaylar belleğin gereksiz kullanımı önlenmiş olur.
addEventListener(type, listener, useCapture, priority, useWeakReference)
addEventListener() metodundaki "useWeakReference" özelliğinin varsayılan değeri "false" dur.
13
ActionScript 3.0 : Olaylar IV: İsteğe Göre Oluşturulan Olaylar (Custom Events)
İsteğe göre oluşturulan olayları ActionScript 3.0'da olay dinleyicilere dağıtmak için "EventDispatcher" sınıfı miras alınmalıdır. Böylelikle olay sınıfından oluşturulan bir nesne sanki olay hedefi gibi davranacaktır. Ayrıca oluşturulacak olaya bir isim verilmeli ve "EventDispatcher" sınıfının dispatchEvent() metodu kullanılmalıdır.
Aşağıda iki sınıf dosyasından "UyariYap.as" dosyasında istenilen olay
public static const UYARI_ILETISI:String = "SigarayaHayır";
komut satırı ile oluşturuluyor. Oluşturulmak istenilen olayın ismi sabitler(constants) ile tanımlanmaktadır. Sabitlere isim verirken tüm karakterlerin büyük harflerle ifade edilmesi yerinde olacaktır. İki farklı sözcük ile ifade edilecekse sabit ismi arada alt çizgi () kullanılmalıdır. UYARIILETISI buradaki örnekte oluşturulan olayın adıdır. UyariYap adlı olay sınıfı içinde olay adı belirtildikten sonra, olayın dağıtımını sağlayacak fonksiyon oluşturulmalıdır. Uyari() fonksiyonu çağrıldığında
dispatchEvent(new Event(UyariYap.UYARI_ILETISI));
komut satırı ile oluşturulan olay dağıtılacaktır. "Ilet.as" sınıf dosyasında ise; artık oluşturulan olay, bir olay dinleyiciye kaydedilmelidir. Bunun için önce olay sınıfından bir olay nesnesi oluşturulmalıdır.
var ilet:UyariYap= new UyariYap();
Olay nesnesi oluşturulduktan sonra addEventListener() metodu ile olay dinleyicisine kaydedilir.
ilet.addEventListener(UyariYap.UYARI_ILETISI, iletiListener);
Olay dinleyicine kayıtlı olay türü (UyariYap.UYARI_ILETISI) ile olay nesnesindeki dispatchEvent() metodundaki olay türü aynıdır.
package
{
import flash.events.*;
import flash.display.*;
import flash.utils.*;
14
public class UyariYap extends EventDispatcher
{
public static const UYARI_ILETISI:String = "SigarayaHayır";
public function UyariYap()
{
var zamanlayici:Timer = new Timer(1000, 1);
zamanlayici.addEventListener(TimerEvent.TIMER, zamanlayiciListener);
zamanlayici.start( );
function zamanlayiciListener(e:TimerEvent):void
{
uyari();
}
}
private function uyari():void
{
dispatchEvent(new Event(UyariYap.UYARI_ILETISI));
}
}
}
package
{
import flash.display.*;
import flash.events.*;
public class Ilet extends Sprite
{
public function Ilet()
{
var ilet:UyariYap= new UyariYap();
ilet.addEventListener(UyariYap.UYARI_ILETISI, iletiListener);
15
}
private function iletiListener(e:Event):void
{
trace("Sigara Sağlığa Zararlıdır!");
}
}
}
Kaynak:
http://active.tutsplus.com/tutorials/actionscript/quick-tip-using-as3-keycodes/
1. Olaylarla ilgili Temel Kavramlar
Event (olay), bir programda bir şeyler gerçekleştiğinde oluşur. Bir fare tıklaması, bir videonun yüklenmesi veya bir metin alanında yapılan değişiklik birer olaydır. ActionScript 3.0, bu tür olaylar gerçekleştiğinde hangi işlevlerin yerine getirileceğine de karar verir. Örneğin bir butona tıklandığında, ekrana uyarı yazdıran bir kod parçasının çalışması istenebilir. Actionscript 3.0’da “olay”larla ilgi olarak aşağıdaki kavramların bilinmesi gerekir:
Olay türü (event type)
Alay adı (event name)
Olay dinleyicileri (event listeners)
Olay dağıtımı (event dispatch)
Olay nesnesi (event object)
Olay hedefi (event target)
ActionScript 3.0’daki olay türlerine örnek olarak aşağıdakiler verilebilir:
MouseEvent: Fare olayları
KeyboardEvent: Klavye olayları
TimerEvent: Zamanlama olayları
SoundEvent: Sesle ilgili olaylar
TextEvent: Metin alanı ile ilgili olaylar
ActivityEvent: Kamera ve mikrofonun aktif ve pasif olmasıyla ilgi olaylar
ContextMenuEvent: Context Menu ile ilgili olayalar
DataEvent: Veri iletimi ile ilgili olaylar.
System events: Sistemin otomatik olarak tetiklediği olaylar, hata mesajları vs…
Olayların tümü events sınıfından türetilmektedir.
ActionScript'de her türlü olay String bir adla gösterilir. Örneğin fareye tıklama olayının adı (event name) "CLICK"tir. Klavyeden bir tuşa basma olayının adı “KEY_DOWN”dır.
ActionScript, olayları gerçekleştirmek için olay dinleyicileri (event listeners) kullanır (olay işleyici de denmektedir). Bir olay dinleyici, belirtilen olay meydana geldiğinde istenen fonksiyonu çağırır.
Olay dinleyicilerini çalıştırma işlemine olay dağıtımı (event dispatch) denir. Olay dinleyiciler EventDispatcher sınıfının bir örneğidir. EventDispatcher sınıfı olay dinleyicileri eklememek için addEventListener() kaldırmak removeEventListener () metotlarını kullanır.
Bir olay dağıtımı başladığında ActionScript, olayları gösteren olay nesnesi (event object) oluşturur. Olay nesnesi, her zaman Event sınıfının bir örneği veya bu sınıftan türeyen bir
2
nesnedir. Her olay dinleyici, olay nesnelerinin değişkenlerini, olayla ilgili bilgilere ulaşmak için kullanabilir.
Her bir olay dağıtımı bir olay hedefine (event target) sahiptir. Olay hedefi, olayın hangi nesneye ait olduğunu belirtir. Örneğin farenin tıklandığı buton nesnesi hedef nesnedir. Tüm olay hedef nesneleri EventDispatcher sınıfının bir örneğidir.
Events (olaylar) sınıfının alt sınıflarını aşağıdaki bağlantıdan öğrenebilirsiniz:
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/events/package-detail.html
Fare Olayları
ActionScript 3.0'da 10 tane fare olayı bulunmaktadır.
CLICK: Tıklama olayı
DOUBLE_CLICK: Çift tıklama olayı (Bu olay için objenin doubleClickEnabled özelliğinin true olması gerekmektedir.)
MOUSE_DOWN: Farenin sol tuşuna basılı tutma olayı
MOUSE_MOVE: Farenin hareket etmesi
MOUSE_OUT: Farenin objenin üzerinden çıkması olayı
MOUSE_OVER: Farenin objenin üzerinde olması
MOUSE_UP: Fareye basılı tutup bırakma olayı
MOUSE_WHEEL: Fare tekerleği ile gerçekleşen olaylar
ROLL_OUT: Farenin butonun üzerinden çıkması olayı
ROLL_OVER: Farenin butonun üzerinde olması
ÖRNEK: mc1 nesnesini tıklayınca büyümesi
mc1.addEventListener(MouseEvent.CLICK, buyut);
function buyut(e:MouseEvent):void
{
mc1.scaleX = 1.5;
mc1.scaleY = 1.5;
}
Klavye Olayları
ActionScript 3.0'da 2 temel klavye olayı bulunmaktadır.
KEY_DOWN: Tuşa basma olayı
3
KEY_UP: Tuşu bırakma olayı
ÖRNEK
import flash.events.KeyboardEvent;
stage.addEventListener(KeyboardEvent.KEY_DOWN,sagaGit);
function sagaGit(a:KeyboardEvent):void
{
trace(a.keyCode);
if (a.keyCode == 39)
{
mc1.x += 10;
}
else if (a.keyCode==37)
{
mc1.x -= 10;
}
else if (a.keyCode==38)
{
mc1.y -= 10;
}
else if (a.keyCode==40)
{
mc1.y += 10;
}
}
stage.addEventListener(KeyboardEvent.KEY_DOWN,yuksel);
stage.addEventListener(KeyboardEvent.KEY_UP, alcal);
function yuksel(b:KeyboardEvent):void
{
if (b.keyCode == 65)
{
mc1.y -= 100;
}
}
function alcal(c:KeyboardEvent):void
{
if (c.keyCode == 65)
{
mc1.y += 100;
}
}
4
2. Olay Dinleyicileri (Event Listeners)
Bir nesneye (olay nesnesi) olay dinleyici eklemek için aşağıdaki yazım kuralı kullanılır:
olayNesnesi.addEventListener(Olayın_Türü.Olayın_Adı, fonksiyonAdı)
Örneğin:
buton.addEventListener(MouseEvent.CLICK, kareAl);
ActionScript'de bir olaya cevap vermek için ilk önce Olay türü (event type) ve ismine (event name) karar verilmelidir. Daha sonra ilgili nesneye olay dinleyici (EventListener) eklenmelidir. Örneğin
MouseEvent.CLICK
Event.COMPLETE
Tüm olay dinleyicileri, "void" dönüş tipine sahiptir.
Bir olay dinleyici aşağıdaki parametreleri alır:
addEventListener (type, listener,useCapture,priority,useWeakReference)
Fonksiyon tanımı ve parametleri:
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
type: olay türü
listener: tetiklenecek fonksiyon
useCapture: (yakala) DOM ağaç yapısında olaylar, kökten (document nesnesinden) hedef elemente doğru sevk edilir ve tekrar document nesnesine geri döner. Bu sevk işlemi sırasında olayın gerçekleştiği elemente ulaşana kadar geçen bütün elementlerde, ilgili olay için bir olay dinleyicisi mevcutsa bu elementlere de olayın gerçekleştiği bildirilir.Yakala seçeneği burada olayın hedef elemente giderken mi yoksa document nesnesine dönerken mi yakalanacağını belirler. true hedefe giderken, false ise dönerken yakalanacağını belirtir.*/
priority: (Çalışma önceliği). "priority" parametresi integer değer almaktadır. Bu değer ne kadar büyükse öncelikte o kadar fazladır. Örneğin "priority" parametresi 1 olan olay dinleyici, "priority" parametresi 0 olan olay dinleyiciden daha önceliklidir.
5
useWeakReference: (Zayıf referans kullan) useWeakReference parametresi false ise yani true olarak ayarlı değilse olay dinleyicileri otomatik olarak bellekten kaldırılmaz
3. Hedef Nesneye (Target Object) Erişme
Hedef nesneye erişim, olay dinleyici eklediğiniz nesnenin özelliklerine erişmek için kullanılır.
Her olay dağıtımı sırasında olay nesnesi, olay dinleyicinin "target" özelliği ile hedef nesneye ulaşımını sağlar.
Şu örneği inceleyelim;
function tikla(e:MouseEvent):void
{
(e.target).alpha=0.2;
trace(e.target); // [object SimpleButton]
}
btn.addEventListener(MouseEvent.CLICK, tikla)
Örnekte, (e.target).alpha=0.2 satırında (e.target) tıklanan butonu gösterirken "btn" adlı butonun yerine kullanılmıştır. trace(e.target) satırında ise hedef nesnenin SimpleButton nesnesi olduğu gösterilmektedir.
Olay Dinleyiciye Kayıtlı Nesneye Erişim
Eğer bir nesne veya sembol aşağıda gösterildiği gibi içiçe nesne veya sembollerden oluşuyorsa target ifadesinin yanı sıra"currentTarget" özelliği de kullanılır.
Eğer bir nesne veya sembol aşağıda gösterildiği gibi içiçe nesne veya sembollerden oluşuyorsa target ifadesinin yanı sıra currentTarget özelliği de kullanılır. Aşağıdaki örnekte instance name'i mc olan sembolün (nesnenin) içinde instance name'i btn olan buton ve instance name'i mc2 MovieClip bulumaktadır. Anlaşılır olması için sembollererin kütüphanedeki isimleri ile durum adları (instance name) aynı olarak verilmşitir.
6
Aşağıdaki kodi ile mc sembolüne (nesnesine) tikla olay dinleyicisi eklenir.
7
mc'ye tıklandığında target özelliği btn veya mc2'ye tıklandığında currentTarget özelliği çalışır.
mc’ye tıklandığında output ekranında
// mc // mc
Mc2’ye tıklandığında output ekranında
// mc // mc2
btn’ye tıklandığında output ekranında
// mc // btn
görünütülenir.
8
Varsayılan Olay Davranışını (Default Event Behaviour) Engellemek
Bir SimpleButonuna basıldığında, varsayılan olarak butonun "down" durumundaki grafik durumu görünür. INPUT özelliğine sahip TextField nesnesine metin girildiğinde klavyeden basılan karakter ekranda varsayılan olarak görülür. Bazen programcı bu nesnelerin kendilerine ait varsayılan davranışlarını göstermesini istemez. Bunun için de olayın kaydedildiği olay dinleyicisinde, Event sınıfından preventDefault() metoduna ihtiyaç vardır.
Aşağıdaki "GorunmezYazi.as" dosyasında da bir TextField alanına, klavyeden girilen karakterlerin ekranda görünmesi engellenerek yazılan her karakter için ekrana "o" karakterini basması istenmektedir.
package
{
import flash.display.*;
import flash.text.*;
import flash.events.*;
public class GorunmezYazi extends Sprite
{
private var yazi:TextField;
public function GorunmezYazi( )
{
yazi = new TextField( );
yazi.border = true;
yazi.type = TextFieldType.INPUT;
addChild(yazi);
//TextField nesnesi oluşturuldu ve ekrana taşındı
yazi.addEventListener(TextEvent.TEXT_INPUT, yaziListener);
}
private function yaziListener(e:TextEvent):void
//TextEvent.TEXT_INPUT olayı gerçekleştiğinde olay dinleyici çalıştı
{
trace("Yazılan metin " + e.text);
// Kullanıcının TextField alanına girdiği karakterler Output
// ekranında görüntülendi
e.preventDefault( );
// Kullanıcının ekrana girdiği yazıların görünümü engellendi
9
yazi.appendText("o");
// Klavyeden her yazı yazıldığında TextField alanında "o"
// karakteri göründü
}
}
}
10
4. Olay Dinleyici O ncelig i (Event Listener Priority)
Bir olay türüne, birden fazla olay dinleyicisini kaydetmek mümkündür. Normalde birden fazla olay dinleyici bir olaya kaydedilmişse, program akışı içinde önce yazılan olay dinleyicisi çalıştırılmaktadır. Aşağıdaki "OncelikBelirleme.as" adlı dosyada "buton" adlı nesne, "sira1" ve "sira2" adlı iki olay dinleyicisine kayıtlıdır. Eğer program içinde herhangi bir öncelik sırası belirtilmeseydi, önce "sira1" adlı olay dinleyicisi çalıştırılacaktı ancak aşağıdaki kod satırlarında öncelik belirtildiği için normal akışın tersine önce "sira2" olay dinleyicisi çalışmaktadır.
Olay dinleyicinin önceliğini değiştirmek için, addEventListener() metodundaki "priority" parametresi ayarlanmalıdır.
addEventListener(type, listener, useCapture, priority, useWeakReference)
buton.addEventListener(MouseEvent.CLICK, sira2,false,1);
"priority" parametresi integer değer almaktadır. Bu değer ne kadar büyükse öncelikte o kadar fazladır. Örneğin "priority" parametresi 1 olan olay dinleyici, "priority" parametresi 0 olan olay dinleyiciden daha önceliklidir. Aynı "priority" parametresine sahip olay dinleyicileri varsa, öncelik program akışı içinde önce yazılan olay dinleyicidedir. Varsayılan olarak "priority" parametresi tüm olay dinleyiciler için 0'dır. Böyle olunca da program akışındaki dinleyicinin yazılma sırası önceliği belirlemektedir.
/* useCapture: (yakala) DOM ağaç yapısında olaylar, kökten (document nesnesinden) hedef elemente doğru sevk edilir ve tekrar document nesnesine geri döner. Bu sevk işlemi sırasında olayın gerçekleştiği elemente ulaşana kadar geçen bütün elementlerde, ilgili olay için bir olay dinleyicisi mevcutsa bu elementlere de olayın gerçekleştiği bildirilir.Yakala seçeneği burada olayın hedef elemente giderken mi yoksa document nesnesine dönerken mi yakalanacağını belirler. true hedefe giderken, false ise dönerken yakalanacağını belirtir.*/
11
package
{
import flash.display.*;
import flash.events.*;
public class OncelikBelirleme extends Sprite
{
public function OncelikBelirleme( )
{
var buton:Button=new Button();
addChild(buton);
buton.addEventListener(MouseEvent.CLICK, sira1,false,0);
buton.addEventListener(MouseEvent.CLICK, sira2,false,1);
}
private function sira1(e:Event):void
{
trace("sira1 sonra gerçekleşti");
}
private function sira2(e:Event):void
{
trace("sira2 önce gerçekleşti");
}
}
}
// Program Ekran Çıktısı
// sira2 önce gerçekleşti
// sira1 sonra gerçekleşti
12
Zayıf Dinleyici Referansı (Weak Listener References)
ActionScript 3.0, zayıf ve kuvvetli bellek referansı diye nesneler üzerinde bellek yönetimi gerçekleştirmektedir. Genellikle bir nesneye yönelik belirli bir referans yoksa, nesne bellek çöp toplayıcılar tarafından toplanarak belleğin gereksiz kullanımı önlenmektedir.
addEventListener() metodundaki "useWeakReference" özelliği "true" yapılarak olay dağıtıcılar ve olay dinleyiciler arasında zayıf bir bağlantı kurulmaktadır. Yani olay dağıtıcılar dinlenirken eğer olay dinleyici silinmişse, zayıf referans değerinin "true" olması ile bellek çöp toplayıcılara izin verilmiş olur. Böylelikle kayıttan çıkarılması unutulan olaylar belleğin gereksiz kullanımı önlenmiş olur.
addEventListener(type, listener, useCapture, priority, useWeakReference)
addEventListener() metodundaki "useWeakReference" özelliğinin varsayılan değeri "false" dur.
13
ActionScript 3.0 : Olaylar IV: İsteğe Göre Oluşturulan Olaylar (Custom Events)
İsteğe göre oluşturulan olayları ActionScript 3.0'da olay dinleyicilere dağıtmak için "EventDispatcher" sınıfı miras alınmalıdır. Böylelikle olay sınıfından oluşturulan bir nesne sanki olay hedefi gibi davranacaktır. Ayrıca oluşturulacak olaya bir isim verilmeli ve "EventDispatcher" sınıfının dispatchEvent() metodu kullanılmalıdır.
Aşağıda iki sınıf dosyasından "UyariYap.as" dosyasında istenilen olay
public static const UYARI_ILETISI:String = "SigarayaHayır";
komut satırı ile oluşturuluyor. Oluşturulmak istenilen olayın ismi sabitler(constants) ile tanımlanmaktadır. Sabitlere isim verirken tüm karakterlerin büyük harflerle ifade edilmesi yerinde olacaktır. İki farklı sözcük ile ifade edilecekse sabit ismi arada alt çizgi () kullanılmalıdır. UYARIILETISI buradaki örnekte oluşturulan olayın adıdır. UyariYap adlı olay sınıfı içinde olay adı belirtildikten sonra, olayın dağıtımını sağlayacak fonksiyon oluşturulmalıdır. Uyari() fonksiyonu çağrıldığında
dispatchEvent(new Event(UyariYap.UYARI_ILETISI));
komut satırı ile oluşturulan olay dağıtılacaktır. "Ilet.as" sınıf dosyasında ise; artık oluşturulan olay, bir olay dinleyiciye kaydedilmelidir. Bunun için önce olay sınıfından bir olay nesnesi oluşturulmalıdır.
var ilet:UyariYap= new UyariYap();
Olay nesnesi oluşturulduktan sonra addEventListener() metodu ile olay dinleyicisine kaydedilir.
ilet.addEventListener(UyariYap.UYARI_ILETISI, iletiListener);
Olay dinleyicine kayıtlı olay türü (UyariYap.UYARI_ILETISI) ile olay nesnesindeki dispatchEvent() metodundaki olay türü aynıdır.
package
{
import flash.events.*;
import flash.display.*;
import flash.utils.*;
14
public class UyariYap extends EventDispatcher
{
public static const UYARI_ILETISI:String = "SigarayaHayır";
public function UyariYap()
{
var zamanlayici:Timer = new Timer(1000, 1);
zamanlayici.addEventListener(TimerEvent.TIMER, zamanlayiciListener);
zamanlayici.start( );
function zamanlayiciListener(e:TimerEvent):void
{
uyari();
}
}
private function uyari():void
{
dispatchEvent(new Event(UyariYap.UYARI_ILETISI));
}
}
}
package
{
import flash.display.*;
import flash.events.*;
public class Ilet extends Sprite
{
public function Ilet()
{
var ilet:UyariYap= new UyariYap();
ilet.addEventListener(UyariYap.UYARI_ILETISI, iletiListener);
15
}
private function iletiListener(e:Event):void
{
trace("Sigara Sağlığa Zararlıdır!");
}
}
}
Kaynak:
http://active.tutsplus.com/tutorials/actionscript/quick-tip-using-as3-keycodes/
egt
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
1
1. Actionscript 3 (AS3)Yazım Kuralları (SYNTAX)
Actionscript noktalı söz dizimine sahiptir. Kod yazarken nokta, virgül, noktalı virgül, iki nokta üst üste, çift tırnak ve parantezler kullanılır.
Nokta (.): Sınıfların metod ve özelliklerine ulaşmak ve yol tanımlamak için kullanılır.
Noktalı virgül (;): Satır sonlarını bildirmek için kullanılır.
İki nokta üstüste (:): Değişken tanımlamak için kullanılır
Çift tırnak (""): String değerleri belirtmek için kullanılır.
Parantezler:
Parantez( ): Fonksiyonlara veri göndermek ve işlem önceliğini belirlemek için kullanılır.
Köşeli parantez [ ]: Dizilere bilgi girişi ve işlem önceliğini belirlemek için kullanılır.
Küme parantezi { }: Kod bloklarını oluşturmak için kullanılır.
İsimlendirme Kuralları
o Büyük küçük harf duyarlılığı mevctur. Örneğin aşağıdakilerden her biri farklı bir değişkeni temsil eder.
oguBote, oGuBote, ogUBote, oguBotE, ogubote, OGUBOTE
o İsimlendirme yaparken Türkçe karakterler (ö,ş,ç,ğ,ü,ı,İ,Ü,Ğ,Ç,Ö) ve boşluk kullanılmaz.
o İsimlendirme için Camel Notation standardı kullanılır. Bu bağlamda değişkenin adını oluşturan kelimelerden sadece ilkinin baş harfi küçük karakterlerle, diğerleri ise buyuk karakterlerle yazılır. Örneğin:
ogrenciAdi, ogrenciSoyadi, ogrenciNo
Açıklama ve Yorumlar
o Blok yorum sınırlayıcı ( /*..*/ ):Kod satırları arasına yorum ve açıklama yazmak için kullanılır. Açılış sınırlayıcı (/*) ile kapanış sınırlayıcı (*/) arasında görüntülenen karakterler açıklama olarak yorumlanır ve ActionScript derleyicisi tarafından yok sayılır. Açıklama tek satırdan fazla ise bu sınırlayı kullanılır. Tek satırlık yorumlar için
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
2
// sınırlayıcısı kullanılır. Kapanış bloğu yorum sınırlayıcısını (*/) çıkarırsanız veya yorumları yuvalamayı denerseniz bir hata mesajı alırsınız. Bir açılış sınırlayıcısı (/*) kullanıldıktan sonra, öncesinde bulunan açılış sınırlayıcılarının sayısı dikkate alınmaksızın birinci kapanış sınırlayıcısı (*/) yorumu sonlandırır. Örneğin iç içe yorum yazmaya yönelik aşağıdaki durum bir hata mesajına yol açar:
/* iç içe açıklama yazma denemesi.
/* ilk açılş sınırlayıcı ile ilk kapanış sınırlayıcısı arasındaki kısım
açıklama olarak alınır */
Bu alan açıklama olarak görülmez */
o Satır yorum sınırlayıcı ( // ): Tek satırlık yorum ve açıklamalar için kullanılır. Açıklama satırının başlangıcını belirtir.
2. AS3 Veri Tu rleri
İlkel veri türleri arasında Boolean, int, Null, Number, String, uint ve void yer alır. ActionScript çekirdek sınıfları ayrıca şu karmaşık veri türlerini de tanımlar: Object, Array, Date, Error, Function, RegExp, XML ve XMLList.
Boolean veri türü
Boolean veri türü iki değer içerir: true ve false. Boolean türündeki değişkenler için diğer değerler geçerli değildir. Tanımlanmış ancak değer atanmamış bir Boolean değişkeninin varsayılan değeri false yani “0” olur.
uint veri türü
uint veri türü, dâhili şekilde 32-bit işaretsiz tam sayı olarak saklanır ve 0 ile 4.294.967.295 (232 - 1) arasındaki tam sayıların kümesini kapsar. uint veri türündeki değişkenler için varsayılan değer 0'dır. Negatif olmayan tam sayıları çağıran özel koşullar için uint veri türünü kullanın. Örneğin, piksel rengi değerlerini temsil etmek için uint veri türünü kullanmanız gerekir.
int veri türü
int veri türü, dahili şekilde 32-bit tam sayı olarak saklanır ve -2.147.483.648 (-231) ile 2.147.483.647 (231 - 1) (dahil) arasındaki tam sayılar kümesini kapsar. Değişkeniniz kesirli/ondalı/kayan nokta (floating number) sayılarını kullanmayacaksa ve 32 bit veri sizin yeterli ise için Number veri türü yerine int veri türünün kullanılması hem daha hızlı hem de daha etkili olur. int veri türündeki değişkenler için varsayılan değer 0'dır.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
3
Number veri türü
ActionScript 3.0'da Number veri türü, tam sayıları ve ondalık sayıları temsil edebilir. Ancak, performansı en üst düzeye çıkarmak için, Number veri türünü yalnızca 32-bit int ve uint türlerinin saklayamayacağı kadar büyük tam sayı değerleri için ve ondalık sayılar için kullanmanız gerekir. , NaN değerini yalnızca Number türündeki değişkenler için varsayılan değerdir. Ayrıca, Flash Player ve Adobe AIR, NaN değerini yalnızca Number türündeki değişkenler için varsayılan değer olarak değil, aynı zamanda bir sayı döndürmesi gerektiği halde sayı döndürmeyen herhangi bir işlemin sonucu olarak da kullanır. Örneğin, negatif bir sayının karekökünü hesaplamayı denerseniz, sonuç NaN olur. Diğer özel Number değerleri arasında pozitif sonsuzluk ve negatif sonsuzluk yer alır. Sıfır (0) değerine bölme işleminin sonucu, yalnızca bölen de 0 olduğunda NaN değerini verir. 0 değerine bölme işlemi, bölen pozitif olduğunda infinity değerini, bölen negatif olduğunda ise -infinity değerini verir.
trace (8/0) // Output: Infinity
trace (-8/0) // Output: -Infinity
trace (0/8) // Output: 0
var a:Number=8/0
trace (a) // Output: Infinity
var b:Number=0/0
trace (b) // Output: NaN
var c:int= 8/0
trace (c) // Output: 0
var d:uint=-8/0
trace(d) // Output: 0
String veri türü
String veri türü, 16-bit karakterlerin bir sırasını temsil eder. Diziler, UTF-16 formatı kullanılarak dâhili şekilde Unicode karakterleri olarak saklanır. String veri türüyle bildirilen bir değişkenin varsayılan değeri, null şeklindedir. null değeri de boş dizi ("") gibi herhangi bir karakter olmadığını temsil etse de, bunun ikisi aynı değildir.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
4
Null veri türü
Null veri türü yalnızca bir değer içerir, null. Bu, String veri türü için ve Object sınıfı da dâhil olmak üzere karmaşık veri türlerini tanımlayan tüm sınıflar için varsayılan değerdir. Boolean, Number, int ve uint gibi diğer ilkel veri türlerinin hiçbiri null değerini içermez. null değerini, Boolean, Number, int veya uint türündeki değişkenlere atamaya çalıştığınızda, Flash Player ve Adobe AIR, null değerini uygun varsayılan değere dönüştürür.
void veri türü
Void veri türü yalnızca bir değer içerir, undefined (tanımlanmamış). Önceki ActionScript sürümlerinde undefined, Object sınıfının örnekleri için varsayılan değerdi. ActionScript 3.0'da, Object örneklerinin varsayılan değeri null şeklindedir. Object sınıfının bir örneğine undefined değerini atamaya çalışırsanız, Flash Player veya Adobe AIR, bu değeri null değerine dönüştürür.
Object veri türü
Object veri türü, Object sınıfı tarafından tanımlanır. Object sınıfı, ActionScript'teki tüm sınıf tanımlamaları için temel sınıf görevi görür. Object veri türünün örnekleri için varsayılan değer null’dur.
3. AS3 Değ işken Tanımlama
Flash As3 Değişkenler, programınızda kullandığınız değerleri saklamanıza olanak sağlar. AS3’de değişken tanımlamak için “var” ifadesi kullanılır ve değişkenler ağaşıdaki gibi tanımlanır.
var degiskenAdi:Veri Türü ;
Eğer bir değişken tanımlarken tür belirtmek istenmiyorsa “ * ” sembolünü kullanılır.
var kullaniciBilgisi:*; /* kullaniciBilgisi degiskeni tanimlanmış ancak herhangi bir tür ataması yapılmamıştır.*/
Dinamik olarak oluşturulmuş değişkenleri silmek için “delete” ifadesi kullanılır.
delete degiskenAdi ;
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
5
Object türünde yeni bir nesne tanımlamak için “var” ifadesinin yanı sıra “new” operatörü de kullanılır.
var mc1:MovieClip= new MovieClip() /* mc1 adında yeni bir MovieClip nesnesi tanımlama*/
ÖRNEKLER:
var i:int ; // i değikenini tanımlama
i=20; // i değişkenine değer atarma
Yukarıdaki satırlar ile aşağdaki satır aynı işlemi yapar:
var i:int=20 ; // i değikenini tanımalar ve i’ye 20 değerini atar.
Bir satırda birden fazla değişken tanımlayabilirsiniz:
var a:int, b:int, c:int; /* Değişken tanımlarını tek bir deyimde gruplandırmak için virgül operatörünü kullananılır */
Bir satırda birden fazla değişken tanımlayıp her birine değer atama işlemi yapabilirsiniz:
var a:int = 10, b:int = 20, c:int = 30;
Bildirildiği anda bir değişkene değer atama tekniği yalnızca tam sayı ve diziler gibi ilkel değerler atanırken değil, bir dizi oluşturulurken veya bir sınıfın örneği başlatılırken de yaygın olarak kullanılır. Aşağıdaki örnek, bir kod satırı kullanılarak bildirilen ve değer atanan bir diziyi gösterir.
var dizi:Array = ["bir", "iki", "üç"]; // Diziye string değer atar
var dizi2:Array = [1,2,3] // Diziye sayısal değer atar
“new” operatörünü kullanarak bir sınıfın örneği oluşturulabilir. Aşağıdaki örnek, movieClip sınıfının bir örneğini oluşturur ve yeni oluşturulan sınıf örneği mc1 adındaki değişkene atar:
var mc1:MovieClip= new MovieClip(); // MovieClip nesnesi tanımlama
var ses:Sound= new Sound(); // Ses nesnesi tanımlama
var fonksiyon:Function= new Function(); // Fonksiyon tanımlama
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
6
Fonksiyon tanımlama için diğer yol:
function kareHesapla(a:int):int
{
var b:int;
b = a*a;
return b;
}
Değer döndürmeyen fonksiyonlar için “void” veri türü kullanılır:
function ekranaYazdir():void
{
trace("Output ekranına yazıdırma fonksiyonu");
}
4. AS3 Değ işken Kapsamı
Bir değişkenin kapsamı, değişkene erişilebilen kod alanıdır. Genel (global)değişken, kodunuzun tüm alanlarında tanımlı değişkenken, yerel (lokal) değişken ise kodunuzun yalnızca bir bölümünde tanımlı değişkendir. Genel değişken, herhangi bir fonksiyon (işlev) veya sınıf tanımı dışında tanımladığınız bir değişkendir. Örneğin, aşağıdaki kod parçasında “yazi” isimli genel bir değişken tanımlanmış ve “ekranaYazdir()” fonksiyonu içerisinde kullanılmıştır.
var yazi:String="Output ekranına yazıdırma fonksiyonu"
function ekranaYazdir():void
{
trace(yazi);
}
Bir fonksiyon veya sınıf içerisinde değişken tanımlarsanız yerel bir değişken tanımı yapmış olursunuz ve tanımladığınız değişken sadece o fonksiyon veya sınıf içerisinde geçerli olur. Örneğin, yukarıdaki “ekranaYazdir()” fonksiyonunu aşağıdaki gibi değiştirirsen “yazi” değişkeni yerel olur ve sadece fonksiyon içerisinde çalışır.
function ekranaYazdir():void
{
var yazi:String="Output ekranına yazıdırma fonksiyonu"
trace(yazi); }
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
7
5. Varsayılan değ erler
Varsayılan değer, siz değerini ayarlamadan önce bir değişkenin içerdiği değerdir. Bir değişkenin ilk defa değerini ayarladığınızda o değişkeni başlatırsınız. Bir değişkeni tanımlar ancak değişkenin değerini ayarlamazsanız, o değişken başlatılmamış olur. Başlatılmamış değişkenin varsayılan değeri, veri türüne bağlıdır. Aşağıdaki tabloda, veri türüne göre organize edilmiş şekilde değişkenlerin varsayılan değerleri verilmiştir.
Tablo 1: Veri türüne göre varsayılan değerler
Veri türü
Varsayılan değer Boolean false
int
0 Number NaN
Object
null String null
uint
0 Bildirilmemiş (tür ek açıklamasına eşit *) undefined
Kullanıcı tanımlı sınıflar da dahil olmak üzere diğer tüm sınıflar.
null
Number türündeki değişkenler için varsayılan değer NaN (sayı değil) olup bu değer, bir değerin sayıyı temsil etmediğini belirtmek için IEEE-754 standardı tarafından tanımlanmış özel bir değerdir.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
8
6. AS3 Veri Tu ru Do nu ştu rmeleri
Tür dönüştürmeleri örtük veya açıkça olabilir. Zorlama olarak da adlandırılan örtük dönüştürme, bazen Flash Player veya Adobe AIR uygulaması tarafından çalışma zamanında gerçekleştirilir. Örneğin, Boolean veri türündeki bir değişkene 2 değeri atanırsa, Flash Player veya Adobe AIR uygulaması, değeri değişkene atamadan önce 2 değerini “true” Boolean değerine dönüştürür. Çevrim olarak da adlandırılan açıkça dönüştürme, kodunuz derleyiciye bir veri türündeki değişkeni farklı bir veri türüne aitmiş gibi değerlendirmesini bildirdiğinde gerçekleşir. Bir nesneyi farklı bir türe çevirmek için, nesne adını parantez içine alıp ve bunun başına yeni türün adını getirirsiniz. Örneğin, aşağıdaki kod bir Boolean değerini alıp tam sayıya çevirir:
var BooleanDegisken:Boolean = true;
var INTDegisken:int = int(BooleanDegisken);
trace(INTDegisken); // Output ekranındaki değer: 1
6.1. Örtük dönüştürmeler
Örtük dönüştürmeler, birçok bağlamda çalışma zamanında gerçekleşir:
Atama ifadelerinde
Değerler işlev (fonksiyon) argümanları olarak girildiğinde
Değerler işlevlerden döndürüldüğünde
Toplama (+) operatörü gibi belirli operatörleri kullanan ifadelerde
6.2 Açıkça dönüştürmeler
Derleme zamanı hatası oluşturacak bir tür uyuşmazlığı istemediğiniz zamanlar tür dönüştürmelerini kullanmanız yararlı olur. Örneğin, bir formdan alınan verilerle çalıştığınızda, belirli dizi değerlerini sayısal değerlere dönüştürmek için tür dönüştürmelerini uygulamak isteyebilirsiniz. Örneğin aşağıdaki kodu çalıştırdığınızda tür uyuşmazlığı hatası uyarısı alırsınız.
var stokAlani:String = "3";
var stok:int = stokAlani; /* Hata: Implicit coercion of a value of type String to an unrelated type int.*/
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
9
Hata almamak için aşağıdaki gibi açıkça dönüştürme yapmalısınız:
var stokAlani:String = "3";
var stok:int = int(stokAlani);
6.2.1. int, uint ve Number türlerine çevrim
Herhangi bir veri türünü üç sayı türünden birine çevirebilirsiniz: int, uint ve Number. Flash Player veya Adobe AIR uygulaması herhangi bir nedenle sayıyı dönüştüremezse, int ve uint veri türleri için 0 varsayılan değeri atanır ve Number veri türü için de NaN varsayılan değeri atanır. Bir Boolean değerini bir sayıya dönüştürürseniz, true değeri 1 ve false değeri de 0 olur.
var booleanDegisken:Boolean = true;
var uintDegisken:uint = uint(booleanDegisken);
var intDegisken:int = int(booleanDegisken);
var numberDegisken:Number = Number(booleanDegisken);
trace(uintDegisken, intDegisken, numberDegisken); // output ekranı: 1 1 1
booleanDegisken= false;
uintDegisken = uint(booleanDegisken);
intDegisken = int(booleanDegisken);
numberDegisken = Number(booleanDegisken);
trace(uintDegisken, intDegisken, numberDegisken); // output ekranı: 0 0 0
Yalnızca rakam içeren string değerleri, sayı türlerinden birine başarıyla dönüştürülebilir. Dönüştürme işlemi sırasında string değerinin başındaki ve sonundaki boşluk karakterleri yok sayılır. Ondalık sayı gibi görünen string değerleri de Number veri türü kullanılarak sayıya dönüştürlebilir. Örneğin:
trace(uint("5")); // Output: 5
trace(uint(" 27 ")); // Output: 27
trace(Number("3.7")); // Output: 3.7
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
10
Ancak ondalık sayı gibi görünen string değerleri unit ve int kullanılarak sayıya dönüştürülmek istendiğinde uint() ve int() öğeleri, ondalık işaretini ve bu işareti takip eden karakterleri kırparak string’in tam sayı kısmını alır. Örneğin:
trace(uint("3.7")); // Output: 3
trace(int("3.7")); // Output: 3
Ayrıca negatif sayı veya onaltılık (örneğin, 0x1A) bir değer gibi görünen string değerleri de sayıya dönüştürülebilir.
trace(Number("-5")); // Output: -5
trace(int("0x1A")); // Output: 26
trace(uint("-5")); // Output: 4294967291 (Alabileceği en büyük değer)
Sayısal olmayan karakterler içeren string değerleri, int() veya uint() ile çevrildiğinde 0 değerini; Number() ile çevrildiğinde ise NaN değerini döndürür.
trace(uint("5a")); // Output: 0
trace(uint("onbir")); // Output: 0
Dönüştürme işlemi, baştaki ve sondaki boşlukları yoksayar ancak dizide iki sayıyı ayıran bir boşluk varsa, 0 veya NaN değerini döndürür.
trace(uint("17 63")); // Output: 0
Aşağıdaki tabloda, başka veri türlerinden Number, int veya uint veri türüne çevrim sonuçları özetlenmektedir.
Tablo 2: Number, int veya uint veri türüne çevrim
Veri türü veya değeri
Number, int veya uint türüne dönüştürme sonucu Boolean Değer true olursa, 1; aksi takdirde, 0.
Date
Date nesnesinin dâhili temsili; bu, 1 Ocak 1970, gece yarısı evrensel saatinden bu yana geçen milisaniye sayısıdır. null 0
Object
Örnek null olursa ve Number türüne dönüştürülürse, NaN; aksi takdirde, 0. String Flash Player veya Adobe AIR uygulaması diziyi bir sayıya dönüştürebilirse bir sayı; aksi takdirde Number türüne dönüştürülürse, NaN veya int ya da uint türüne dönüştürülürse 0.
undefined
Number türüne dönüştürülürse, NaN; int veya uint türüne dönüştürülürse, 0.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
11
6.2.2. Boolean değerine çevrim
Herhangi bir sayısal veri türünden (uint, int ve Number) Boolean değerine çevrimi, sayısal değer 0 olursa “false”, aksi takdirde “true” değerini verir. Number veri türü için, NaN değeri de false değerini verir. Aşağıdaki örnek, -1, 0 ve 1 sayılarının çevrim sonuçlarını gösterir:
var sayi:Number;
for (sayi = -1; sayi<2; sayi++)
{
trace("Boolean(" + sayi +") " + Boolean(sayi));
}
Örnekten elde edilen çıktı, üç sayıdan yalnızca 0 sayısının false değeri döndürdüğünü gösterir:
Boolean(-1)true
Boolean(0)false
Boolean(1)true
Bir String değerinden Boolean değerine çevrim, string null veya boş ("") olduğunda false değerini döndürür. Aksi takdirde, true değerini döndürür.
var str1:String; // Değer atanmamış varsayılan değer null.
trace(Boolean(str1)); // Output: false
var str2:String = ""; // boş
trace(Boolean(str2)); // Output: false
var str3:String = " "; // Tırnaklar arasında bir boşluk var, boşluk tuşuna basılmış.
trace(Boolean(str3)); // Output: true
Object sınıfı örneğinden Boolean değerine çevrim, örnek null ise false değerini; aksi takdirde true değerini döndürür:
var yeniObj:Object; // Başlatılmamış, varsayılan değer null.
trace(Boolean(yeniObj)); // Output: false
yeniObj = new Object(); // Başlatılmış
trace(Boolean(yeniObj)); // true
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
12
Aşağıdaki tabloda, başka veri türlerinden Boolean veri türüne çevrim sonuçları özetlenmektedir:
Tablo 3: başka veri türlerinden Boolean veri türüne çevrim
Veri türü veya değeri
Boolean değerine dönüştürme sonucu String Değer null veya boş dizi ("") olursa false; aksi takdirde true.
null
false Number, int veya uint Değer NaN veya 0 olursa false; aksi takdirde true.
Object
Null olursa false; aksi takdirde true.
6.2.3. String türüne çevrim
Herhangi bir sayısal veri türünden String veri türüne çevrim, sayının string halinde temsilini döndürür
var n:Number=12500.001 ;
trace (String(n)); // Output: 12500.001
Bir Boolean değerinden String veri türüne çevrim, değer true olursa "true" dizisini ve değer false olursa "false" dizisini döndürür.
Bir Object sınıfı örneğinden String veri türüne çevrim, örnek null olursa "null" dizisini döndürür. Aksi takdirde, Object sınıfından String türüne çevrim, "[object Object]" dizisini döndürür.
var mc:MovieClip= new MovieClip();
trace (String(mc)); // Output: [object MoveClip]
var ses:Sound= new Sound();
trace (String(ses)); // Output: [object Sound]
Array sınıfı örneğinden String türüne çevrim, tüm dizi öğelerinin virgül sınırlı bir listesini içeren bir dizi döndürür. Örneğin, aşağıdaki String veri türüne çevrim işlemi, dizideki üç öğeyi de içeren tek bir dizi döndürür:
var dizi:Array = ["ilköğretim", "lise", "yükseköğretim"];
var dizidenYaziya:String= String(dizi)
trace(dizidenYaziya); // Output: ilköğretim,lise,yükseköğretim
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
13
Date sınıfı örneğinden String türüne çevrim, örneğin içerdiği tarihin aşağıdaki ögrekte olduğu gibi string halinde temsilini döndürür. (Çıktıda Pasifik Yaz Saati sonucu gösterilmektedir):
var tarih:Date = new Date(2005,6,1);
trace(String(tarih)); // Fri Jul 1 00:00:00 GMT-0700 2005
Aşağıdaki tabloda, başka veri türlerinden String veri türüne çevrim sonuçları özetlenmektedir.
Tablo 4: Başka veri türlerinden String veri türüne çevrim
Veri türü veya değeri
String’e dönüştürme sonucu Array Tüm dizi öğelerini içeren bir string değer.
Boolean
"true" veya "false" Date Date nesnesinin satır halinde temsili.
null
"null" Number, int veya uint Sayının dizi halinde temsili.
Object
Örnek null olursa, "null"; aksi takdirde, "[object Object]".
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
14
7. Operato rler
Sembolik operatörler, bir ifadenin değerlerinin nasıl birleştirileceğini, karşılaştırılacağını veya değiştirileceğini belirten karakterlerdir.
Tablo 5: Atama Operatörü
ATAMA Operatör Adı Açıklama
=
assignment (Atama)
degisken2 (sağdaki işlenen) değerini, degisken1 öğesindeki değişkene, dizi öğesine veya özelliğe atar.
Tablo 6: Aritmetik işlem Operatörleri
ARİTMETİK Operatör Adı Açıklama
+
addition (toplama)
Sayısal ifadeler ekler. ++ increment (arttırma) Bir ifadeye 1 ekler.
-
subtraction (çıkartma)
Negatif yapma veya çıkarma için kullanılır. -- decrement (azaltma) İşlenenden 1 çıkarır.
*
multiplication (çarpma)
İki sayısal ifadeyi çarpar. % modulo (mod) degisken2 öğesine bölünen degisken1 öğesinin kalanını hesaplar.
/
division (Bölme)
degisken1 öğesini degisken2 öğesine böler.
Tablo 7: Aritmetik Birleşik Atama Operatörleri
ARİTMETİK BİLEŞİK ATAMA Operatör Adı Açıklama
+=
addition assignment (Toplamı atama)
degisken1 öğesine degisken1+degisken2 değerini atar. /= division assignment (Bölümü atama) degisken1 öğesine degisken1°isken2 değerini atar.
%=
modulo assignment
(Bölümden kalanı atama)
degisken1 öğesine degisken1%degisken2 değerini atar. *= multiplication assignment (Çarpımı atama) degisken1 öğesine degisken1*degisken2 değerini atar.
-=
subtraction assignment
(Çıkartma ataması)
degisken1 öğesine degisken1-degisken2 değerini atar.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
15
Tablo 8: Karşılaştırma Operatörleri
KARŞILAŞTIRMA Operatör Adı Açıklama
==
equality (eşitlik)
İki ifadeyi eşitlik için test eder. > greater than (büyük) İki ifadeyi karşılaştırır ve degisken1 öğesinin degisken2 öğesinden yüksek olup olmadığını belirler; yüksek olması durumunda sonuç true olur.
>=
greater than or equal to (büyük eşit)
İki ifadeyi karşılaştırır ve degisken1 öğesinin degisken2 öğesinden yüksek veya bu öğeye eşit mi olduğunu (true) yoksa degisken1 öğesinin degisken2 öğesinden düşük mü olduğunu (false) belirler. != inequality (eşit değil) Eşitlik (==) operatörünün tam tersi için test yapar.
<
less than (küçük)
İki ifadeyi karşılaştırır ve degisken1 öğesinin degisken2 öğesinden düşük olup olmadığını belirler; düşük olması durumunda sonuç true olur. <= less than or equal to (küçük eşit) İki ifadeyi karşılaştırır ve degisken1 öğesinin degisken2 öğesinden düşük veya bu öğeye eşit olup olmadığını belirler; düşük veya eşit olması durumunda sonuç true olur.
===
strict equality (katı eşitlik)
Eşitlik için iki ifadeyi test eder ancak otomatik veri dönüştürmesini gerçekleştirmez. !== strict inequality (katı eşitsizlik) Katı eşitlik (===) operatörünün tam tersi için test yapar.
Tablo 9: Mantıksal İşlem Operatörleri
MANTIKSAL && logical AND (mantıksal ve) false değerindeyse veya false değerine dönüştürülebiliyorsa degisken1 öğesini, aksi takdirde degisken2 öğesini döndürür.
&&=
logical AND assignment
(mantıksal ve işleminin sonucunu atama)
degisken1 öğesine degisken1&°isken2 değerini atar. ! logical NOT (mantıksal değil) Bir değişkenin veya ifadenin Boolean değerini tersine çevirir.
||
logical OR
(mantıksal ya da)
true değerindeyse veya true değerine dönüştürülebiliyorsa degisken1 öğesini, aksi takdirde degisken2 öğesini döndürür. ||= logical OR assignment (mantıksal ya da işleminin sonucunu atama) degisken1 öğesine degisken1 || degisken2 değerini atar.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
16
8. Operato r Ayrıntıları ve Kullanım O rnekleri
= ATAMA (assignment) OPERATÖRÜ
Kullanım ifade1 = ifade2
ÖRNEKLER
a değişkenine 5 değerini atamak için:
var a:Number = 5;
a değişkenine "merhaba" değerini atamak için :
var a:String;
a = "merhaba";
+ TOPLAMA (addition) OPERATÖRÜ Sayısal ifadeleri ekler. Her iki ifade tam sayı olursa, toplam da bir tam sayı olur; ifadelerden biri veya her ikisi ondalık sayısı olursa, toplam da bir ondalık sayısı olur. String ifadeler toplanmak yerine birleştirilir. Kullanım ifade1+ ifade2 ÖRNEKLER Aşağıdaki ifade, 2 ve 3 tam sayılarını toplar ve Output ekranına 5 yazadırır:
trace(2 + 3); // 5 Aşağıdaki ifade, 2,5 ve 3,25 ondalık sayılarını toplar ve Output ekranına 5.75 yazdırır:
trace(2.5 + 3.25); // 5.75
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
17 Toplanmak istenen değerler string ise sayısal bir toplama yapılmaz değerler birleştirilir.
var universite:String = "OGU";
var bolum:String = "BOTE";
var okulBilgisi:String = universite + bolum;
trace(okulBilgisi); // Output: OGUBOTE Yalnızca bir ifade bile string olursa, diğer tüm ifadeler string türüne dönüştürülür ve birleştirilir:
var ad:String="Ayse"
var yas:int=8
var kullaniciBilgisi:*; // veri türü belirtilmiyor
kullaniciBilgisi =ad+yas; /*toplama işleminden sonra kullaniciBilgisi değişkeninin türü otomatik olarak String olarak atanır. */
trace(kullaniciBilgisi) ; // Output: Ayse8 Dinamik alanlarla ve girdi metni alanlarıyla ilişkilendirilmiş değişkenler String veri türünü içerir. Aşağıdaki örnekte, kullanıcı kalvyeden gelen ürün sayısını gelenUrunSayisi.text isimli metin alanına girmektedir. Daha sonra depodaki ürün sayısı ile gelen ürün sayısı toplanıp mevcut stok hesaplanmaktadır. Mevcut stoğu bulmak için aşağıdaki gibi bir kod yazılırsa tür uyuşmazlığı hatası alınır.
var depodakiUrunSayisi:Number=1345;
var mevcutStok=gelenUrunSayisi.text + depodakiUrunSayisi;
trace(mevcutStok); Hata almamak için metin alanındaki string değeri sayısal veri türüne dönüştürmek gerekir.
var depodakiUrunSayisi:Number = 1345;
var mevcutStok= Number(gelenUrunSayisi.text) + depodakiUrunSayisi;
trace(mevcutStok);
++ ARTTIRMA (increment) OPERATÖRÜ
Kullanım
++ifade
ifade++
Bir ifadeye 1 ekler. ifade, bir değişken, dizideki bir öğe veya bir nesne özelliği olabilir. Operatörün artırma öncesi formu (++ifade), ifade öğesine 1 ekler ve sonucu döndürür.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
18
Operatörün artırma sonrası formu (ifade++), ifade öğesine 1 ekler ve ifadenin başlangıç değerini (ekleme öncesi değer) döndürür. Bazı döngülerin içerisinde bu durum önemli olmaktadır.
ÖRNEKLER Aşağıdaki kod parçası output ekranına 8 yazdırır. i değişkeninin değeri 9 olduğu halde “degisken++” degisken öğesinin başlangıç değerini (ekleme öncesi değer) döndürdüğü için output ekranında 8 yazar.
var i:int=8;
trace (i++); //Output: 8
Aşağıdaki kod parçası output ekranına 9 yazdırır. “++degisken” degisken öğesine 1 ekleyip sonucu döndürdüğü için output ekranında 9 yazar.
var i:int=8;
trace (++i); //Output: 9
- ÇIKARTMA (subtraction) OPERATÖRÜ
Kullanım - ifade1 ifade1 - ifade2
Kullanım 1: Operatör, negatif yapma için kullanıldığında, sayısal bir ifadenin işaretini ters çevirir.
Kullanım 2: Operatör, çıkarma için kullanıldığında, ifade1 öğesinden ifade2 öğesini çıkararak iki sayısal ifade üzerinde aritmetik bir çıkarma işlemi gerçekleştirir. Her iki ifade tam sayı olduğunda, fark da bir tam sayıdır. İfadelerden biri veya her ikisi ondalık sayısı olduğunda, fark da bir ondalık sayısıdır.
ÖRNEK
Kullanım 1: Aşağıdaki kod, 2 + 3 ifadesinin işaretini ters çevirerek output ekranına -5 yazdırır:
trace(-(2 + 3)); // Output: -5
Kullanım 2: Aşağıdaki ifade, 5 tam sayısından 2 tam sayısını çıkarır. Sonuçta elde edilen 3 bir tam sayıdır.
trace(5 - 2); // 3
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
19
Aşağıdaki ifade, 3,25 ondalık sayıdan 1,5 ondalık sayısını çıkarır. Sonuçta elde edilen 1,75 bir ondalık sayıdır.
trace(3.25 - 1.5); // 1.75
ÖNEMLİ: Actionscript 3’de ondalık sayıları yazarken virgül “,” yerine nokta “.” kullanılır.
-- AZALTMA (decrement) OPERATÖRÜ
Kullanım
--ifade
ifade--
Değerden 1 çıkarır. Değer, bir değişken, dizideki bir öğe veya bir nesne özelliği olabilir. Operatörün ifade öncesi formu (--ifade), ifade öğesinden 1 çıkarır ve sonucu döndürür. Operatörün ifade sonrası formu (ifade--), ifade öğesinden 1 çıkarır ve ifadenin başlangıç değerini (eksiltme öncesi değer) döndürür.
ÖRNEKLER
Operatörün eksiltme öncesi formu, a öğesini 2 değerine azaltır (a - 1 = 2) ve sonucu a olarak döndürür:
var a:Number = 3;
var b:Number = --a;
trace (b) // Output: 2
Operatörün eksiltme sonrası formu, a öğesini 2 değerine azaltır (a - 1 = 2) ve a öğesinin orijinal değerini döndürür:
var a:Number = 3;
var b:Number = --a;
trace (b) // Output: 3
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
20
* ÇARPMA (multiplication) OPERATÖRÜ
Kullanım ifade1 * ifade2
İki sayısal ifadeyi çarpar. Her iki ifade tam sayı olduğunda, ürün de bir tam sayıdır. İfadelerden biri veya her ikisi ondalık sayısı olduğunda, sonuç da ondalık olur.
ÖRNEKLER
Aşağıdaki ifade 2 ve 3 tam sayılarını çarparak 6 tam sayısını elde eder:
trace(2*3); // 6
Aşağıdaki ifade, 2,0 ve 3,1416 kayan nokta sayılarını çarparak 6,2832 kayan nokta sayısını elde eder:
trace(2.0 * 3.1416); // 6.2832
% MOD (modulo) OPERATÖRÜ
Kullanım ifade1 % ifade2
ifade2 öğesine bölünen ifade1 öğesinin kalanını hesaplar. Değerlerden herhangi biri sayısal değilse, modulo (%) operatörü bunu bir sayıya dönüştürmeye çalışır.
Modülleme sonucunun işareti, bölünenin (birinci sayı) işaretiyle eşleşir. Örneğin, -4 % 3 ve -4 % -3 öğelerinin ikisi de -1 olarak değerlendirilir.
ÖRNEKLER
trace(12 % 5); // 2
trace(4 % 4); // 0
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
21
/ BÖLME (division) OPERATÖRÜ
Kullanım ifade1 / ifade2
ifade1 öğesini ifade2 öğesine böler.
ÖRNEKLER
trace (12/4) // 3
trace (12.5/2) // 6.25
+= TOPLAMI ATAMA (addition assignment) OPERATÖRÜ
Kullanım ifade1 += ifade2
ifade1 öğesine ifade1 + ifade2 değerini atar. Örneğin, aşağıdaki iki ifade aynı sonucu verir:
x += y;
x = x + y;
Toplama (+) operatörünün tüm kuralları, toplama ataması (+=) operatörü için de geçerlidir.
ÖRNEKLER
var x:Number = 5;
var y:Number = 10;
x += y;
trace (x) // 15
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
22
/= BÖLÜMÜ ATAMA (division assignment) OPERATÖRÜ
Kullanım ifade1 /= ifade2
ifade1 öğesine ifade1 / ifade2 değerini atar. Örneğin, aşağıdaki iki ifade eşdeğerdir:
x /= y;
x = x / y;
ÖRNEKLER
var a:Number = 10;
var b:Number = 2;
a /= b;
trace(a); // 5
%= BÖLÜMDEN KALANI ATAMA (modulo assignment) OPERATÖRÜ
Kullanım ifade1 % = ifade2
ifade1 öğesine ifade1 % ifade2 değerini atar. Aşağıdaki iki ifade eşdeğerdir:
x %= y;
x = x % y;
ÖRNEKLER
Aşağıdaki örnek, a değişkenine 4 değerini atar:
var a:Number = 14;
var b:Number = 5;
a %= b;
trace(a); // 4
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
23
*= ÇARPIMI ATAMA (multiplication assignment) OPERATÖRÜ
Kullanım
ifade1 *= ifade2
ifade1 öğesine ifade1 * ifade2 değerini atar. Örneğin, aşağıdaki iki ifade eşdeğerdir:
x *= y
x = x * y
ÖRNEKLER
a değişkenine 50 değerini atam:
var a:Number = 5;
var b:Number = 10;
trace(a *= b); // 50
Aşağıdaki örneğin ikinci ve üçüncü satırı, eşittir işaretinin sağındaki ifadeleri hesaplar ve sonuçları c ve d öğesine atar:
var i:Number = 5;
var c:Number = 4 - 6;
var d:Number = i + 2;
trace(c *= d); // -14
-= ÇIKARTMA ATAMASI (subtraction assignment) OPERATÖRÜ
Kullanım
ifade1 -= ifade2
ifade1 öğesine ifade1 - ifade2 değerini atar. Örneğin, aşağıdaki iki ifade eşdeğerdir:
x -= y;
x = x - y;
String ifadelerinin sayıya dönüştürülmesi gerekir; aksi takdirde sonuç NaN (not a number (sayı değil)) olur.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
24
ÖRNEKLER
5'ten 10'u çıkarmak için çıkarma ataması (-=) operatörünün kullanır kullanımı:
var x:Number = 5;
var y:Number = 10;
x -= y;
trace(x); // -5
Aşağıdaki kod satırındaki string ifadelerde sayı içerdiği halde çalışmaz. “1067: Implicit coercion of a value of type String to an unrelated type Number.” Hatası verir. String ifadelerin sayıya dönüştürülmesi gerekir.
var a:String = "5";
var b:String = "10";
a -= b;
== EŞİTLİK (equality) OPERATÖRÜ
Kullanım
ifade1 == ifade2
İki ifadeyi eşitlik için test eder. İfadeler eşit olursa sonuç true, eşit olmazsa sonuç false olur.
Karşılaştırılan iki ifadenin veri türü aynıysa, eşitlik durumu veri türüne bağlı olarak aşağıdaki gibi olur:
String ifadeleri, aynı sayıda aynı karakterleri içeriyorsa eşittir.
Aynı değerlere sahip olmaları durumunda int, uint ve Boolean türünün değerlerinin eşittir.
Her ikisi de NaN olmadığı sürece, aynı değerlere sahip sayıların eşit olduğu düşünülür.
Her iki işlenenin de değeri null veya undefined olursa, bunların eşit olduğu düşünülür.
Karşılaştırılan iki ifadenin veri türleri farklıysa, aşağıdaki durumlar dışında sonuç false olur:
İfadelerin değerleri undefined ve null olduğunda, sonuç true olur.
Otomatik veri türü dönüştürme, Boolean, int, uint ve Number değerlerinin veri türlerini uyumlu türlere dönüştürdüğünde dönüştürülen değerler eşitse ifadelerin eşit olduğu düşünülür.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
25
ÖRNEKLER
if ifadesiyle eşitlik (==) operatörünü kullanır:
var a:String = "Ayse"
var b:String = "Ayse";
if (a == b) {
trace("Ayse eşittir Ayse");
}
Boolean değerleri sayılara dönüştürülür, burada true değeri 1'e ve false değeri 0'a dönüştürülür.
var c:Number = 1;
var d:Boolean = true;
trace(c == d); // true
var e:Number = 0;
var f:Boolean = false;
trace(e == f); // true
Otomatik tür dönüştürmesi sadece Boolean ve Sayı (Number, int, uint) ifadeler arasında yapılmaktadır. String değerleri için tür dönüştürmesi yapılmaz. String değerleri Boolean değerlerine dönüştürülmez, bu nedenle aşağıdaki ifade false değerini döndürür:
var g:String = "true";
var h:Boolean = true;
trace(g == h); // false
String değerler ve sayı (Number, int, uint) değerler bir birine otomatik olarak dönüştrülmez. Örneğin aşağıdaki kod tür uyuşmazlığı hatası (1176: Comparison between a value with static type Number and a possibly unrelated type String) verir.
var a:Number = 5;
var b:String = "5";
trace(a == b);
kodun doğrusu aşağıdaki gibi olmalıdır.
var a:Number = 5;
var b:String = "5";
var c:Number= Number (b)
trace(a == c); // true
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
26
> BÜYÜKTÜR (greater than) OPERATÖRÜ
Kullanım
ifade1 > ifade2
İki ifadeyi karşılaştırır ve ifade1 öğesinin ifade2 öğesinden büyük olup olmadığını belirler; büyük olması durumunda sonuç true olur. ifade1 öğesi, ifade2 öğesinden küçük veya bu öğeye eşit olursa, sonuç false olur.
Her iki ifade de String türündeyse, ifadeler alfabetik sırayla karşılaştırılır; tüm büyük harfler küçük harflerden önce gelir. İfadeler alfebatik karakter değil rakamsa ilk önce sayıya dönüştürülür ve sonra karşılaştırılır.
ÖRNEKLER
Aşağıdaki örnek, büyük harfler küçük harflerden önce gelecek şekilde string ifadelerin alfabetik olarak karşılaştırıldığını gösterir:
var a:String = "first";
var b:String = "First";
trace(a > b); // true
var d:String = "4";
var e:String = "5";
trace(e > d); // true
Boolean değerleri otomatik olarak sayıya dönüştürülür:
var e: Number = 2;
var f:Boolean = true;
trace(e > f); // true
>= BÜYÜK EŞİT (greater than or equal to) OPERATÖRÜ
Kullanım
ifade1 >= ifade2
İki ifadeyi karşılaştırır ve ifade1, ifade2’den büyük veya eşitse true değerini; ifade1, ifade2’den küçükse false değerini döndürür.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
27
ÖRNEKLER
Geçerli saatin 12'den büyük mü yoksa 12'ye eşit mi olduğunu belirlemek için büyüktür veya eşittir (>=) operatörü kullanılır:
if (new Date().getHours() >= 12) {
trace("Tünaydın");
} else {
trace("Günaydın");
}
Boolean, Number, int, uint ifadeleri arasında otomatik tür dönüştürme yapılmaktadır.
var a: Number = 2;
var b:Boolean = true;
trace(a != b); // true
var c: Number = 1;
var d:Boolean = true;
trace(c != d); // false
var e: Number = 1;
var f:uint = 1;
trace(e != f); // false
!= EŞİT DEĞİL (inequality) OPERATÖRÜ
Kullanım
ifade1 != ifade2
Eşitlik (==) operatörünün tam tersi için test yapar. ifade1 ile ifade2 eşit olursa, sonuç false olur. Eşitlik (==) operatöründe olduğu gibi, eşitlik durumu, karşılaştırılan veri türlerine bağlıdır.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
28
Karşılaştırılan iki ifadenin veri türü aynıysa, eşitlik durumu veri türüne bağlı olarak aşağıdaki gibi olur:
String ifadeleri, aynı sayıda aynı karakterleri içeriyorsa eşittir.
Aynı değerlere sahip olmaları durumunda int, uint ve Boolean türünün değerlerinin eşittir.
Her ikisi de NaN olmadığı sürece, aynı değerlere sahip sayıların eşit olduğu düşünülür.
Her iki işlenenin de değeri null veya undefined olursa, bunların eşit olduğu düşünülür.
Karşılaştırılan iki ifadenin veri türleri farklıysa, aşağıdaki durumlar dışında sonuç false olur:
İfadelerin değerleri undefined ve null olduğunda, sonuç true olur.
Otomatik veri türü dönüştürme, Boolean, int, uint ve Number değerlerinin veri türlerini uyumlu türlere dönüştürdüğünde ve dönüştürülen değerler eşitse ifadelerin eşit olduğu düşünülür.
ÖRNEKLER
Aşağıdaki örnek eşitsizliğin sonucunu gösterir (! =) operator:
trace(5 != 8); // true
trace(5 != 5); // false
if ifadesinde eşitsizlik (!=) operatörünün kullanımını:
var a:String = "Ankara";
var b:String = "İstabul";
if (a != b) {
trace("Girilen şehirler eşleşmiyor");
}
< KÜÇÜK (less than) OPERATÖRÜ
Kullanım
ifade1 < ifade2
İki ifadeyi karşılaştırır ve ifade1 öğesinin ifade2 öğesinden küçük olup olmadığını belirler; küçük olması durumunda sonuç true olur. ifade1 öğesi, ifade2 öğesinden büyükse veya bu öğeye eşit olursa, sonuç false olur.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
29
Her iki ifade de String türündeyse, ifadeler alfabetik sırayla karşılaştırılır; tüm büyük harfler küçük harflerden önce gelir. İfadeler alfebatik karakter değil rakamsa ilk önce sayıya dönüştürülür ve sonra karşılaştırılır.
ÖRNEKLER
Hem sayı hem de string karşılaştırmalarının true ve false sonuçları:
trace(5 < 10); // true
trace(2 < 2); // false
trace(10 < 3); // false
trace("11" < "3"); // true
trace("C" < "abc"); // true
trace ("a"<"b") // true
trace ("a"<"B") // false
trace ("a"<"A") // false
trace("A" < "a"); // true
trace("Ali" < "Hale"); // true
trace("Hale"< "Ali"); // false
trace("ali" < "Hale"); // false
trace("11" < 3); /* tür uyuşmazlığı hatası (1176: Comparison between a value with static type String and a possibly unrelated type int.) */
<= KÜÇÜK EŞİT (less than or equal to) OPERATÖRÜ
Kullanım
ifade1 <= ifade2
İki ifadeyi karşılaştırır ve ifade1 öğesinin ifade2 öğesinden küçük veya bu öğeye eşit olup olmadığını belirler; küçük veya eşit olması durumunda sonuç true olur. ifade1 öğesi ifade2 öğesinden büyükse, sonuç false olur.
Her iki işlenen de String türündeyse, işlenenler alfabetik sırayla karşılaştırılır; tüm büyük harfler küçük harflerden önce gelir. İfadeler alfebatik karakter değil rakamsa ilk önce sayıya dönüştürülür ve sonra karşılaştırılır.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
30
ÖRNEKLER
Hem sayı hem de string karşılaştırmalarının true ve false sonuçları:
trace(5 <= 10); // true
trace(2 <= 2); // true
trace(10 <= 3); // false
trace("11" <= "3"); // true
trace ("a"<="b") // true
trace ("a"<="B") // false
trace ("a"<="A") // false
trace("A" <= "a"); // true
trace("Ali" <= "Hale"); // true
trace("Hale"<= "Ali"); // false
trace("ali" <= "Hale"); // false
trace("11" <= 3); /* tür uyuşmazlığı hatası (1176: Comparison between a value with static type String and a possibly unrelated type int.) */
=== KATI EŞİTLİK (strict equality) OPERATÖRÜ
Kullanım
ifade1 === ifade2
Eşitlik için iki ifadeyi test eder ancak sayılar (Number, int ve unit) hariç otomatik veri dönüştürmesini gerçekleştirmez. Veri türleri de dâhil olmak üzere her iki ifade eşit olursa, sonuç true olur.
Katı eşitlik (===) operatörü, eşitlik (==) operatörünün benzerliği:
String ifadeleri, aynı sayıda aynı karakterleri içeriyorsa eşittir.
Katı eşitlik (===) operatörü ve eşitlik (==) operatörünün farklılığı:
null ve undefined karşılaştırdığında, katı eşitlik operatörü false değerini döndürür.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
31
ÖRNEKLER
Aşağıdaki örnek, hem değer hem de veri türleri eşleştiğinde, katı eşitliğin (===) eşitlik (==) ile aynı olduğunu gösterir:
var string1:String = "5";
var string2:String = "5";
trace(string1 == string2); // true
trace(string1 === string2); // true
Aşağıdaki örnek, katı eşitlik operatörünün Boolean değerlerini sayılara dönüştürmediğini ancak eşitlik operatörünün bu dönüştürmeyi yaptığını gösterir:
var n:Number = 1;
var b:Boolean = true;
trace(n == b); // true
trace(n === b); // false
Katı eşitlik operatörü Number, int ve uint veri türlerini dönüştürmektedir:
var num1:Number = 1;
var num2:int = 1;
var num3:uint = 1;
trace(num1 === num2); // true
trace(num1 === num3); // true
Aşağıdaki örnek, katı eşitlik operatörünün null ve undefined değerlerini eşit değerlendirmediğini ancak eşitlik operatörünün bunları eşit değerlendirdiğini gösterir:
trace(null == undefined); // true
trace(null === undefined); // false
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
32
!== KATI EŞİTŞİZLİK (strict inequality) OPERATÖRÜ
Kullanım
ifade1 !== ifade2
Katı eşitlik (===) operatörünün tam tersi için test yapar. ifade1 ile ifade2 eşit olursa ve bunların veri türleri eşitse sonuç false olur.
Katı eşitlik (===) operatörü ve eşitlik (==) operatörünün benzerliği:
String ifadeleri, aynı sayıda aynı karakterleri içeriyorsa eşittir.
Katı eşitlik (===) operatörü ve eşitlik (==) operatörünün farklılığı:
null ve undefined karşılaştırdığında, katı eşitlik (!==) operatörü true değerini döndürür.
ÖRNEKLER
var s1:String = "5";
var s2:String = "5";
var s3:String = "Hello";
var n:Number = 5;
var b:Boolean = true;
trace(s1 !== s2); // false
trace(s1 !== s3); // true
trace(s1 !== b); // true
trace(s1 !== n); /* tür uyuşmazlığı hatası (1176: Comparison between a value with static type String and a possibly unrelated type int.) */
&& MANTIKSAL VE (logical AND) OPERATÖRÜ
Kullanım
ifade1 && ifade2
Eğer her iki ifade de Boolean türünde değilse; false değerindeyse veya false değerine dönüştürülebiliyorsa ifade1 öğesini, aksi takdirde ifade2 öğesini döndürür. false değerine dönüştürülebilen değer örnekleri arasında 0, NaN, null ve undefined yer alır.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
33
Eğer her iki ifade de Boolean türündeyse, aşağıdaki tabloda gösterildiği gibi, yalnızca her iki işlenen de true değerinde olursa, sonuç true olur:
Tablo 10: Boolean ifadeler ve mantıksal ve (&&) İşlemi İfade Değerlendirme true && true true true && false false false && false false false && true false
ÖRNEKLER
Örneğin, bir oyuncunun oyunu kazanıp kazanmadığını belirlemek üzere bir test uygulamak için mantıksal AND (&&) operatörünü kullanır. Oyuncu, oyun sırasında ilerlediğinde veya puan kazandığında denemeSayisi değişkeni ve score değişkeni güncellenir. Oyuncunun en fazla üç denemede 75 puan aldığında oyunu kazandığını düşünelim. Bu bağlamda, üç veya daha az deneme sonucunda oyuncunun puanı 75 ya da daha yüksek bir değer olduğunda, komut dosyası "Oyunu kazandınız!" mesajını verir.
var denemeSayisi:Number = 2;
var score:Number = 77;
if ((denemeSayisi<= 3) && (score >= 75)) {
trace("Oyunu kazandınız!")
} else {
trace("Tekrar deneyin!");
}
Karşılaştırma operatörleri (==, !=, >,<, <= vs.) Boolean sonuç döndürdüğünden, yukarıdaki örnekte verilen if ifadesinin içerindeki “mantıksal ve (&&)” işlemi Tablo 10’a göre yapılmıştır.
Mantıksal ve işlemi (&&) eğer her iki ifade de Boolean türünde değilse; false değerindeyse veya false değerine dönüştürülebiliyorsa ifade1 öğesini, aksi takdirde ifade2 öğesini döndürür.
var n:Number = 5;
var b:Boolean = true;
trace (n&&b) /* Output: true (Birinci değer (n) false olmadığı için ikinci değeri(b) döndürdü. */
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
34
var a:Boolean;
a= (n&&b)
trace (a) // Output: true
Yukarıdaki kod parçacığında (n&&b) ifadesinde n=5 olduğu yani false olmadığı için b değerini yani “true” döndürür. (n&&b), Boolean bir ifade döndürdüğünden sonucu Boolean bir değere atanbilirilir. O yüzden a değişkeni Boolean olarak tanımlanmıştır, aksi takdirde tür uyşmazlığı hatası alınır.
&&= MANTIKSAL VE İŞLEMİNİN SONUCUNU ATAMA (logical AND assignment) OPERATÖRÜ
Kullanım
ifade1 &&= ifade2
ifade1 öğesine ifade1 && ifade2 değerini atar. Örneğin, aşağıdaki iki ifade eşdeğerdir:
x &&= y;
x = x && y;
Eğer her iki ifade de Boolean türünde değilse; false değerindeyse veya false değerine dönüştürülebiliyorsa ifade1 öğesini, aksi takdirde ifade2 öğesini döndürür ve ifade1’e atar.
ÖRNEKLER
var a:Boolean; // varsayılan değer false
var b:Boolean = true;
a&&=b
trace(a) // Output: false (false && true nun sonucu false , Tablo 10)
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
35
Eğer her iki ifade de Boolean türünde değilse; false değerindeyse veya false değerine dönüştürülebiliyorsa ifade1 öğesini, aksi takdirde ifade2 öğesini döndürür ve ifade1’e atar. false değerine dönüştürülebilen değer örnekleri arasında 0, NaN, null ve undefined yer alır. Aşağıdaki örnekte s1 değikeninin varsayılan değeri null olduğundan s1 değeri döner ve tekrar s1’e atanır.
var s1:String;
var s2:String = " Merhaba";
s1&&=s2
trace(s1) // Output: null
s1 değeri null değil de boşluk (" ") veya sıfır ("0") değerleri de dâhil olmak üzere herhangi bir string ifade olduğunda, s2 değeri döner.
var s1:String="0";
var s2:String = "Merhaba";
s1&&=s2
trace(s1) // Output: Merhaba
s1 değeri boş ("") olduğunda true değeri döner.
var s1:String="";
var s2:String = "Merhaba";
s1&&=s2
trace(s1) // Output: true
! MANTIKSAL DEĞİL (logical NOT) OPERATÖRÜ
Kullanım
!ifade
Bir değişkenin veya ifadenin Boolean değerini tersine çevirir. ifade öğesi, true mutlak veya dönüştürülmüş değerine sahip bir değişkense, !ifade öğesinin değeri false olur. Örneğin, x && y ifadesi false olarak değerlendirilirse, !(x && y) ifadesi true olarak değerlendirilir.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
36
Aşağıdaki ifadeler, mantıksal NOT (!) operatörünün kullanılmasının sonucunu gösterir:
!true öğesi false değerini döndürür.
!false öğesi true değerini döndürür.
ÖRNEKLER
Şu örnekte, mutlu değişkeni false olarak ayarlanır. if koşulu !mutlu koşulunu değerlendirir, koşul true ise, trace() ifadesi bir dize çıktısı verir.
var mutlu:Boolean = false;
if (!mutlu) {
trace("don't worry, be happy"); // Output: don't worry, be happy
}
!false değeri true değerine eşit olduğundan, trace ifadesi çalıştırılır.
|| MANTIKSAL YA DA (logical OR) OPERATÖRÜ
Kullanım
ifade1 || ifade2
Eğer her iki ifade de Boolean türünde değilse; true değerindeyse veya true değerine dönüştürülebiliyorsa ifade1 öğesini, aksi takdirde ifade2 öğesini döndürür.
Eğer her iki ifade de Boolean türündeyse, ifadelerin biri veya ikisi true olduğunda sonuç true olur; yalnızca her iki ifade de false olduğunda sonuç false olur:
Tablo 11: Boolean ifadeler ve mantıksal ya da (&&) İşlemi İfade Değerlendirme true || true true true || false true false || false false false || true true
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
37
ÖRNEKLER
Aşağıda if ifadesinde mantıksal ya da (||) operatörünü kullanır. İkinci ifade true olduğundan sonuç true olur:
var a:Number = 10;
var b:Number = 250;
var basla:Boolean = false;
if ((a > 25) || (b > 200) || (basla)) {
trace("logical OR başarıyla çalıştı!"); // logical OR başarıyla çalıştı!
}
||= MANTIKSAL YA DA İŞLEMİNİN SONUCUNU ATAMA (logical OR assignment) OPERATÖRÜ
Kullanım
ifade1 ||= ifade2
ifade1 öğesine ifade1 || ifade2 değerini atar. Aşağıdaki iki ifade eşdeğerdir:
x ||= y;
x = x || y;
Eğer her iki ifade de Boolean türünde değilse; true değerindeyse veya true değerine dönüştürülebiliyorsa ifade1 öğesini, aksi takdirde ifade2 öğesini döndürür ve ifade1’e atar.
Her iki ifade de Boolean veri türü üyesiyse sonuç bir Boolean değeri. Aksi takdirde sonuç, iki ifadeden birinin değeri olur.
ÖRNEKLER
Aşağıdaki örnekte s1||=s2 işleminde s1 değikeninin varsayılan değeri null olduğundan s2 değeri döner ve s1’e atanır.
var s1:String;
var s2:String = "Merhaba";
s1||=s2
trace(s1) // Output: Merhaba
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
38
s1 değeri null değil de boşluk (" ") veya sıfır ("0") değerleri de dâhil olmak üzere herhangi bir string ifade olduğunda true olarak algılanır ve s1 değeri döner.
var s1:String="0";
var s2:String = " Merhaba ";
s1||=s2
trace(s1) // Output: 0
s1 değeri boş ("") olduğunda s1 değeri false olarak algılanır, s2 değeri döner ve s1’e atanır.
var s1:String="";
var s2:String = "Merhaba";
s1||=s2
trace(s1) // Output: Merhaba
KAYNAKLAR
Bu dökümandaki bilgiler aşağıdaki sitelerdeki içerik temel alınıp, sadeleştirilerek, cümle düşüklükleri ve anlatım bozukluklukları giderilerek düzenlenmiştir.
http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/all-index-Symbols.html
http://help.adobe.com/tr_TR/FlashPlatform/reference/actionscript/3/operators.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6
1
1. Actionscript 3 (AS3)Yazım Kuralları (SYNTAX)
Actionscript noktalı söz dizimine sahiptir. Kod yazarken nokta, virgül, noktalı virgül, iki nokta üst üste, çift tırnak ve parantezler kullanılır.
Nokta (.): Sınıfların metod ve özelliklerine ulaşmak ve yol tanımlamak için kullanılır.
Noktalı virgül (;): Satır sonlarını bildirmek için kullanılır.
İki nokta üstüste (:): Değişken tanımlamak için kullanılır
Çift tırnak (""): String değerleri belirtmek için kullanılır.
Parantezler:
Parantez( ): Fonksiyonlara veri göndermek ve işlem önceliğini belirlemek için kullanılır.
Köşeli parantez [ ]: Dizilere bilgi girişi ve işlem önceliğini belirlemek için kullanılır.
Küme parantezi { }: Kod bloklarını oluşturmak için kullanılır.
İsimlendirme Kuralları
o Büyük küçük harf duyarlılığı mevctur. Örneğin aşağıdakilerden her biri farklı bir değişkeni temsil eder.
oguBote, oGuBote, ogUBote, oguBotE, ogubote, OGUBOTE
o İsimlendirme yaparken Türkçe karakterler (ö,ş,ç,ğ,ü,ı,İ,Ü,Ğ,Ç,Ö) ve boşluk kullanılmaz.
o İsimlendirme için Camel Notation standardı kullanılır. Bu bağlamda değişkenin adını oluşturan kelimelerden sadece ilkinin baş harfi küçük karakterlerle, diğerleri ise buyuk karakterlerle yazılır. Örneğin:
ogrenciAdi, ogrenciSoyadi, ogrenciNo
Açıklama ve Yorumlar
o Blok yorum sınırlayıcı ( /*..*/ ):Kod satırları arasına yorum ve açıklama yazmak için kullanılır. Açılış sınırlayıcı (/*) ile kapanış sınırlayıcı (*/) arasında görüntülenen karakterler açıklama olarak yorumlanır ve ActionScript derleyicisi tarafından yok sayılır. Açıklama tek satırdan fazla ise bu sınırlayı kullanılır. Tek satırlık yorumlar için
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
2
// sınırlayıcısı kullanılır. Kapanış bloğu yorum sınırlayıcısını (*/) çıkarırsanız veya yorumları yuvalamayı denerseniz bir hata mesajı alırsınız. Bir açılış sınırlayıcısı (/*) kullanıldıktan sonra, öncesinde bulunan açılış sınırlayıcılarının sayısı dikkate alınmaksızın birinci kapanış sınırlayıcısı (*/) yorumu sonlandırır. Örneğin iç içe yorum yazmaya yönelik aşağıdaki durum bir hata mesajına yol açar:
/* iç içe açıklama yazma denemesi.
/* ilk açılş sınırlayıcı ile ilk kapanış sınırlayıcısı arasındaki kısım
açıklama olarak alınır */
Bu alan açıklama olarak görülmez */
o Satır yorum sınırlayıcı ( // ): Tek satırlık yorum ve açıklamalar için kullanılır. Açıklama satırının başlangıcını belirtir.
2. AS3 Veri Tu rleri
İlkel veri türleri arasında Boolean, int, Null, Number, String, uint ve void yer alır. ActionScript çekirdek sınıfları ayrıca şu karmaşık veri türlerini de tanımlar: Object, Array, Date, Error, Function, RegExp, XML ve XMLList.
Boolean veri türü
Boolean veri türü iki değer içerir: true ve false. Boolean türündeki değişkenler için diğer değerler geçerli değildir. Tanımlanmış ancak değer atanmamış bir Boolean değişkeninin varsayılan değeri false yani “0” olur.
uint veri türü
uint veri türü, dâhili şekilde 32-bit işaretsiz tam sayı olarak saklanır ve 0 ile 4.294.967.295 (232 - 1) arasındaki tam sayıların kümesini kapsar. uint veri türündeki değişkenler için varsayılan değer 0'dır. Negatif olmayan tam sayıları çağıran özel koşullar için uint veri türünü kullanın. Örneğin, piksel rengi değerlerini temsil etmek için uint veri türünü kullanmanız gerekir.
int veri türü
int veri türü, dahili şekilde 32-bit tam sayı olarak saklanır ve -2.147.483.648 (-231) ile 2.147.483.647 (231 - 1) (dahil) arasındaki tam sayılar kümesini kapsar. Değişkeniniz kesirli/ondalı/kayan nokta (floating number) sayılarını kullanmayacaksa ve 32 bit veri sizin yeterli ise için Number veri türü yerine int veri türünün kullanılması hem daha hızlı hem de daha etkili olur. int veri türündeki değişkenler için varsayılan değer 0'dır.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
3
Number veri türü
ActionScript 3.0'da Number veri türü, tam sayıları ve ondalık sayıları temsil edebilir. Ancak, performansı en üst düzeye çıkarmak için, Number veri türünü yalnızca 32-bit int ve uint türlerinin saklayamayacağı kadar büyük tam sayı değerleri için ve ondalık sayılar için kullanmanız gerekir. , NaN değerini yalnızca Number türündeki değişkenler için varsayılan değerdir. Ayrıca, Flash Player ve Adobe AIR, NaN değerini yalnızca Number türündeki değişkenler için varsayılan değer olarak değil, aynı zamanda bir sayı döndürmesi gerektiği halde sayı döndürmeyen herhangi bir işlemin sonucu olarak da kullanır. Örneğin, negatif bir sayının karekökünü hesaplamayı denerseniz, sonuç NaN olur. Diğer özel Number değerleri arasında pozitif sonsuzluk ve negatif sonsuzluk yer alır. Sıfır (0) değerine bölme işleminin sonucu, yalnızca bölen de 0 olduğunda NaN değerini verir. 0 değerine bölme işlemi, bölen pozitif olduğunda infinity değerini, bölen negatif olduğunda ise -infinity değerini verir.
trace (8/0) // Output: Infinity
trace (-8/0) // Output: -Infinity
trace (0/8) // Output: 0
var a:Number=8/0
trace (a) // Output: Infinity
var b:Number=0/0
trace (b) // Output: NaN
var c:int= 8/0
trace (c) // Output: 0
var d:uint=-8/0
trace(d) // Output: 0
String veri türü
String veri türü, 16-bit karakterlerin bir sırasını temsil eder. Diziler, UTF-16 formatı kullanılarak dâhili şekilde Unicode karakterleri olarak saklanır. String veri türüyle bildirilen bir değişkenin varsayılan değeri, null şeklindedir. null değeri de boş dizi ("") gibi herhangi bir karakter olmadığını temsil etse de, bunun ikisi aynı değildir.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
4
Null veri türü
Null veri türü yalnızca bir değer içerir, null. Bu, String veri türü için ve Object sınıfı da dâhil olmak üzere karmaşık veri türlerini tanımlayan tüm sınıflar için varsayılan değerdir. Boolean, Number, int ve uint gibi diğer ilkel veri türlerinin hiçbiri null değerini içermez. null değerini, Boolean, Number, int veya uint türündeki değişkenlere atamaya çalıştığınızda, Flash Player ve Adobe AIR, null değerini uygun varsayılan değere dönüştürür.
void veri türü
Void veri türü yalnızca bir değer içerir, undefined (tanımlanmamış). Önceki ActionScript sürümlerinde undefined, Object sınıfının örnekleri için varsayılan değerdi. ActionScript 3.0'da, Object örneklerinin varsayılan değeri null şeklindedir. Object sınıfının bir örneğine undefined değerini atamaya çalışırsanız, Flash Player veya Adobe AIR, bu değeri null değerine dönüştürür.
Object veri türü
Object veri türü, Object sınıfı tarafından tanımlanır. Object sınıfı, ActionScript'teki tüm sınıf tanımlamaları için temel sınıf görevi görür. Object veri türünün örnekleri için varsayılan değer null’dur.
3. AS3 Değ işken Tanımlama
Flash As3 Değişkenler, programınızda kullandığınız değerleri saklamanıza olanak sağlar. AS3’de değişken tanımlamak için “var” ifadesi kullanılır ve değişkenler ağaşıdaki gibi tanımlanır.
var degiskenAdi:Veri Türü ;
Eğer bir değişken tanımlarken tür belirtmek istenmiyorsa “ * ” sembolünü kullanılır.
var kullaniciBilgisi:*; /* kullaniciBilgisi degiskeni tanimlanmış ancak herhangi bir tür ataması yapılmamıştır.*/
Dinamik olarak oluşturulmuş değişkenleri silmek için “delete” ifadesi kullanılır.
delete degiskenAdi ;
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
5
Object türünde yeni bir nesne tanımlamak için “var” ifadesinin yanı sıra “new” operatörü de kullanılır.
var mc1:MovieClip= new MovieClip() /* mc1 adında yeni bir MovieClip nesnesi tanımlama*/
ÖRNEKLER:
var i:int ; // i değikenini tanımlama
i=20; // i değişkenine değer atarma
Yukarıdaki satırlar ile aşağdaki satır aynı işlemi yapar:
var i:int=20 ; // i değikenini tanımalar ve i’ye 20 değerini atar.
Bir satırda birden fazla değişken tanımlayabilirsiniz:
var a:int, b:int, c:int; /* Değişken tanımlarını tek bir deyimde gruplandırmak için virgül operatörünü kullananılır */
Bir satırda birden fazla değişken tanımlayıp her birine değer atama işlemi yapabilirsiniz:
var a:int = 10, b:int = 20, c:int = 30;
Bildirildiği anda bir değişkene değer atama tekniği yalnızca tam sayı ve diziler gibi ilkel değerler atanırken değil, bir dizi oluşturulurken veya bir sınıfın örneği başlatılırken de yaygın olarak kullanılır. Aşağıdaki örnek, bir kod satırı kullanılarak bildirilen ve değer atanan bir diziyi gösterir.
var dizi:Array = ["bir", "iki", "üç"]; // Diziye string değer atar
var dizi2:Array = [1,2,3] // Diziye sayısal değer atar
“new” operatörünü kullanarak bir sınıfın örneği oluşturulabilir. Aşağıdaki örnek, movieClip sınıfının bir örneğini oluşturur ve yeni oluşturulan sınıf örneği mc1 adındaki değişkene atar:
var mc1:MovieClip= new MovieClip(); // MovieClip nesnesi tanımlama
var ses:Sound= new Sound(); // Ses nesnesi tanımlama
var fonksiyon:Function= new Function(); // Fonksiyon tanımlama
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
6
Fonksiyon tanımlama için diğer yol:
function kareHesapla(a:int):int
{
var b:int;
b = a*a;
return b;
}
Değer döndürmeyen fonksiyonlar için “void” veri türü kullanılır:
function ekranaYazdir():void
{
trace("Output ekranına yazıdırma fonksiyonu");
}
4. AS3 Değ işken Kapsamı
Bir değişkenin kapsamı, değişkene erişilebilen kod alanıdır. Genel (global)değişken, kodunuzun tüm alanlarında tanımlı değişkenken, yerel (lokal) değişken ise kodunuzun yalnızca bir bölümünde tanımlı değişkendir. Genel değişken, herhangi bir fonksiyon (işlev) veya sınıf tanımı dışında tanımladığınız bir değişkendir. Örneğin, aşağıdaki kod parçasında “yazi” isimli genel bir değişken tanımlanmış ve “ekranaYazdir()” fonksiyonu içerisinde kullanılmıştır.
var yazi:String="Output ekranına yazıdırma fonksiyonu"
function ekranaYazdir():void
{
trace(yazi);
}
Bir fonksiyon veya sınıf içerisinde değişken tanımlarsanız yerel bir değişken tanımı yapmış olursunuz ve tanımladığınız değişken sadece o fonksiyon veya sınıf içerisinde geçerli olur. Örneğin, yukarıdaki “ekranaYazdir()” fonksiyonunu aşağıdaki gibi değiştirirsen “yazi” değişkeni yerel olur ve sadece fonksiyon içerisinde çalışır.
function ekranaYazdir():void
{
var yazi:String="Output ekranına yazıdırma fonksiyonu"
trace(yazi); }
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
7
5. Varsayılan değ erler
Varsayılan değer, siz değerini ayarlamadan önce bir değişkenin içerdiği değerdir. Bir değişkenin ilk defa değerini ayarladığınızda o değişkeni başlatırsınız. Bir değişkeni tanımlar ancak değişkenin değerini ayarlamazsanız, o değişken başlatılmamış olur. Başlatılmamış değişkenin varsayılan değeri, veri türüne bağlıdır. Aşağıdaki tabloda, veri türüne göre organize edilmiş şekilde değişkenlerin varsayılan değerleri verilmiştir.
Tablo 1: Veri türüne göre varsayılan değerler
Veri türü
Varsayılan değer Boolean false
int
0 Number NaN
Object
null String null
uint
0 Bildirilmemiş (tür ek açıklamasına eşit *) undefined
Kullanıcı tanımlı sınıflar da dahil olmak üzere diğer tüm sınıflar.
null
Number türündeki değişkenler için varsayılan değer NaN (sayı değil) olup bu değer, bir değerin sayıyı temsil etmediğini belirtmek için IEEE-754 standardı tarafından tanımlanmış özel bir değerdir.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
8
6. AS3 Veri Tu ru Do nu ştu rmeleri
Tür dönüştürmeleri örtük veya açıkça olabilir. Zorlama olarak da adlandırılan örtük dönüştürme, bazen Flash Player veya Adobe AIR uygulaması tarafından çalışma zamanında gerçekleştirilir. Örneğin, Boolean veri türündeki bir değişkene 2 değeri atanırsa, Flash Player veya Adobe AIR uygulaması, değeri değişkene atamadan önce 2 değerini “true” Boolean değerine dönüştürür. Çevrim olarak da adlandırılan açıkça dönüştürme, kodunuz derleyiciye bir veri türündeki değişkeni farklı bir veri türüne aitmiş gibi değerlendirmesini bildirdiğinde gerçekleşir. Bir nesneyi farklı bir türe çevirmek için, nesne adını parantez içine alıp ve bunun başına yeni türün adını getirirsiniz. Örneğin, aşağıdaki kod bir Boolean değerini alıp tam sayıya çevirir:
var BooleanDegisken:Boolean = true;
var INTDegisken:int = int(BooleanDegisken);
trace(INTDegisken); // Output ekranındaki değer: 1
6.1. Örtük dönüştürmeler
Örtük dönüştürmeler, birçok bağlamda çalışma zamanında gerçekleşir:
Atama ifadelerinde
Değerler işlev (fonksiyon) argümanları olarak girildiğinde
Değerler işlevlerden döndürüldüğünde
Toplama (+) operatörü gibi belirli operatörleri kullanan ifadelerde
6.2 Açıkça dönüştürmeler
Derleme zamanı hatası oluşturacak bir tür uyuşmazlığı istemediğiniz zamanlar tür dönüştürmelerini kullanmanız yararlı olur. Örneğin, bir formdan alınan verilerle çalıştığınızda, belirli dizi değerlerini sayısal değerlere dönüştürmek için tür dönüştürmelerini uygulamak isteyebilirsiniz. Örneğin aşağıdaki kodu çalıştırdığınızda tür uyuşmazlığı hatası uyarısı alırsınız.
var stokAlani:String = "3";
var stok:int = stokAlani; /* Hata: Implicit coercion of a value of type String to an unrelated type int.*/
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
9
Hata almamak için aşağıdaki gibi açıkça dönüştürme yapmalısınız:
var stokAlani:String = "3";
var stok:int = int(stokAlani);
6.2.1. int, uint ve Number türlerine çevrim
Herhangi bir veri türünü üç sayı türünden birine çevirebilirsiniz: int, uint ve Number. Flash Player veya Adobe AIR uygulaması herhangi bir nedenle sayıyı dönüştüremezse, int ve uint veri türleri için 0 varsayılan değeri atanır ve Number veri türü için de NaN varsayılan değeri atanır. Bir Boolean değerini bir sayıya dönüştürürseniz, true değeri 1 ve false değeri de 0 olur.
var booleanDegisken:Boolean = true;
var uintDegisken:uint = uint(booleanDegisken);
var intDegisken:int = int(booleanDegisken);
var numberDegisken:Number = Number(booleanDegisken);
trace(uintDegisken, intDegisken, numberDegisken); // output ekranı: 1 1 1
booleanDegisken= false;
uintDegisken = uint(booleanDegisken);
intDegisken = int(booleanDegisken);
numberDegisken = Number(booleanDegisken);
trace(uintDegisken, intDegisken, numberDegisken); // output ekranı: 0 0 0
Yalnızca rakam içeren string değerleri, sayı türlerinden birine başarıyla dönüştürülebilir. Dönüştürme işlemi sırasında string değerinin başındaki ve sonundaki boşluk karakterleri yok sayılır. Ondalık sayı gibi görünen string değerleri de Number veri türü kullanılarak sayıya dönüştürlebilir. Örneğin:
trace(uint("5")); // Output: 5
trace(uint(" 27 ")); // Output: 27
trace(Number("3.7")); // Output: 3.7
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
10
Ancak ondalık sayı gibi görünen string değerleri unit ve int kullanılarak sayıya dönüştürülmek istendiğinde uint() ve int() öğeleri, ondalık işaretini ve bu işareti takip eden karakterleri kırparak string’in tam sayı kısmını alır. Örneğin:
trace(uint("3.7")); // Output: 3
trace(int("3.7")); // Output: 3
Ayrıca negatif sayı veya onaltılık (örneğin, 0x1A) bir değer gibi görünen string değerleri de sayıya dönüştürülebilir.
trace(Number("-5")); // Output: -5
trace(int("0x1A")); // Output: 26
trace(uint("-5")); // Output: 4294967291 (Alabileceği en büyük değer)
Sayısal olmayan karakterler içeren string değerleri, int() veya uint() ile çevrildiğinde 0 değerini; Number() ile çevrildiğinde ise NaN değerini döndürür.
trace(uint("5a")); // Output: 0
trace(uint("onbir")); // Output: 0
Dönüştürme işlemi, baştaki ve sondaki boşlukları yoksayar ancak dizide iki sayıyı ayıran bir boşluk varsa, 0 veya NaN değerini döndürür.
trace(uint("17 63")); // Output: 0
Aşağıdaki tabloda, başka veri türlerinden Number, int veya uint veri türüne çevrim sonuçları özetlenmektedir.
Tablo 2: Number, int veya uint veri türüne çevrim
Veri türü veya değeri
Number, int veya uint türüne dönüştürme sonucu Boolean Değer true olursa, 1; aksi takdirde, 0.
Date
Date nesnesinin dâhili temsili; bu, 1 Ocak 1970, gece yarısı evrensel saatinden bu yana geçen milisaniye sayısıdır. null 0
Object
Örnek null olursa ve Number türüne dönüştürülürse, NaN; aksi takdirde, 0. String Flash Player veya Adobe AIR uygulaması diziyi bir sayıya dönüştürebilirse bir sayı; aksi takdirde Number türüne dönüştürülürse, NaN veya int ya da uint türüne dönüştürülürse 0.
undefined
Number türüne dönüştürülürse, NaN; int veya uint türüne dönüştürülürse, 0.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
11
6.2.2. Boolean değerine çevrim
Herhangi bir sayısal veri türünden (uint, int ve Number) Boolean değerine çevrimi, sayısal değer 0 olursa “false”, aksi takdirde “true” değerini verir. Number veri türü için, NaN değeri de false değerini verir. Aşağıdaki örnek, -1, 0 ve 1 sayılarının çevrim sonuçlarını gösterir:
var sayi:Number;
for (sayi = -1; sayi<2; sayi++)
{
trace("Boolean(" + sayi +") " + Boolean(sayi));
}
Örnekten elde edilen çıktı, üç sayıdan yalnızca 0 sayısının false değeri döndürdüğünü gösterir:
Boolean(-1)true
Boolean(0)false
Boolean(1)true
Bir String değerinden Boolean değerine çevrim, string null veya boş ("") olduğunda false değerini döndürür. Aksi takdirde, true değerini döndürür.
var str1:String; // Değer atanmamış varsayılan değer null.
trace(Boolean(str1)); // Output: false
var str2:String = ""; // boş
trace(Boolean(str2)); // Output: false
var str3:String = " "; // Tırnaklar arasında bir boşluk var, boşluk tuşuna basılmış.
trace(Boolean(str3)); // Output: true
Object sınıfı örneğinden Boolean değerine çevrim, örnek null ise false değerini; aksi takdirde true değerini döndürür:
var yeniObj:Object; // Başlatılmamış, varsayılan değer null.
trace(Boolean(yeniObj)); // Output: false
yeniObj = new Object(); // Başlatılmış
trace(Boolean(yeniObj)); // true
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
12
Aşağıdaki tabloda, başka veri türlerinden Boolean veri türüne çevrim sonuçları özetlenmektedir:
Tablo 3: başka veri türlerinden Boolean veri türüne çevrim
Veri türü veya değeri
Boolean değerine dönüştürme sonucu String Değer null veya boş dizi ("") olursa false; aksi takdirde true.
null
false Number, int veya uint Değer NaN veya 0 olursa false; aksi takdirde true.
Object
Null olursa false; aksi takdirde true.
6.2.3. String türüne çevrim
Herhangi bir sayısal veri türünden String veri türüne çevrim, sayının string halinde temsilini döndürür
var n:Number=12500.001 ;
trace (String(n)); // Output: 12500.001
Bir Boolean değerinden String veri türüne çevrim, değer true olursa "true" dizisini ve değer false olursa "false" dizisini döndürür.
Bir Object sınıfı örneğinden String veri türüne çevrim, örnek null olursa "null" dizisini döndürür. Aksi takdirde, Object sınıfından String türüne çevrim, "[object Object]" dizisini döndürür.
var mc:MovieClip= new MovieClip();
trace (String(mc)); // Output: [object MoveClip]
var ses:Sound= new Sound();
trace (String(ses)); // Output: [object Sound]
Array sınıfı örneğinden String türüne çevrim, tüm dizi öğelerinin virgül sınırlı bir listesini içeren bir dizi döndürür. Örneğin, aşağıdaki String veri türüne çevrim işlemi, dizideki üç öğeyi de içeren tek bir dizi döndürür:
var dizi:Array = ["ilköğretim", "lise", "yükseköğretim"];
var dizidenYaziya:String= String(dizi)
trace(dizidenYaziya); // Output: ilköğretim,lise,yükseköğretim
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
13
Date sınıfı örneğinden String türüne çevrim, örneğin içerdiği tarihin aşağıdaki ögrekte olduğu gibi string halinde temsilini döndürür. (Çıktıda Pasifik Yaz Saati sonucu gösterilmektedir):
var tarih:Date = new Date(2005,6,1);
trace(String(tarih)); // Fri Jul 1 00:00:00 GMT-0700 2005
Aşağıdaki tabloda, başka veri türlerinden String veri türüne çevrim sonuçları özetlenmektedir.
Tablo 4: Başka veri türlerinden String veri türüne çevrim
Veri türü veya değeri
String’e dönüştürme sonucu Array Tüm dizi öğelerini içeren bir string değer.
Boolean
"true" veya "false" Date Date nesnesinin satır halinde temsili.
null
"null" Number, int veya uint Sayının dizi halinde temsili.
Object
Örnek null olursa, "null"; aksi takdirde, "[object Object]".
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
14
7. Operato rler
Sembolik operatörler, bir ifadenin değerlerinin nasıl birleştirileceğini, karşılaştırılacağını veya değiştirileceğini belirten karakterlerdir.
Tablo 5: Atama Operatörü
ATAMA Operatör Adı Açıklama
=
assignment (Atama)
degisken2 (sağdaki işlenen) değerini, degisken1 öğesindeki değişkene, dizi öğesine veya özelliğe atar.
Tablo 6: Aritmetik işlem Operatörleri
ARİTMETİK Operatör Adı Açıklama
+
addition (toplama)
Sayısal ifadeler ekler. ++ increment (arttırma) Bir ifadeye 1 ekler.
-
subtraction (çıkartma)
Negatif yapma veya çıkarma için kullanılır. -- decrement (azaltma) İşlenenden 1 çıkarır.
*
multiplication (çarpma)
İki sayısal ifadeyi çarpar. % modulo (mod) degisken2 öğesine bölünen degisken1 öğesinin kalanını hesaplar.
/
division (Bölme)
degisken1 öğesini degisken2 öğesine böler.
Tablo 7: Aritmetik Birleşik Atama Operatörleri
ARİTMETİK BİLEŞİK ATAMA Operatör Adı Açıklama
+=
addition assignment (Toplamı atama)
degisken1 öğesine degisken1+degisken2 değerini atar. /= division assignment (Bölümü atama) degisken1 öğesine degisken1°isken2 değerini atar.
%=
modulo assignment
(Bölümden kalanı atama)
degisken1 öğesine degisken1%degisken2 değerini atar. *= multiplication assignment (Çarpımı atama) degisken1 öğesine degisken1*degisken2 değerini atar.
-=
subtraction assignment
(Çıkartma ataması)
degisken1 öğesine degisken1-degisken2 değerini atar.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
15
Tablo 8: Karşılaştırma Operatörleri
KARŞILAŞTIRMA Operatör Adı Açıklama
==
equality (eşitlik)
İki ifadeyi eşitlik için test eder. > greater than (büyük) İki ifadeyi karşılaştırır ve degisken1 öğesinin degisken2 öğesinden yüksek olup olmadığını belirler; yüksek olması durumunda sonuç true olur.
>=
greater than or equal to (büyük eşit)
İki ifadeyi karşılaştırır ve degisken1 öğesinin degisken2 öğesinden yüksek veya bu öğeye eşit mi olduğunu (true) yoksa degisken1 öğesinin degisken2 öğesinden düşük mü olduğunu (false) belirler. != inequality (eşit değil) Eşitlik (==) operatörünün tam tersi için test yapar.
<
less than (küçük)
İki ifadeyi karşılaştırır ve degisken1 öğesinin degisken2 öğesinden düşük olup olmadığını belirler; düşük olması durumunda sonuç true olur. <= less than or equal to (küçük eşit) İki ifadeyi karşılaştırır ve degisken1 öğesinin degisken2 öğesinden düşük veya bu öğeye eşit olup olmadığını belirler; düşük veya eşit olması durumunda sonuç true olur.
===
strict equality (katı eşitlik)
Eşitlik için iki ifadeyi test eder ancak otomatik veri dönüştürmesini gerçekleştirmez. !== strict inequality (katı eşitsizlik) Katı eşitlik (===) operatörünün tam tersi için test yapar.
Tablo 9: Mantıksal İşlem Operatörleri
MANTIKSAL && logical AND (mantıksal ve) false değerindeyse veya false değerine dönüştürülebiliyorsa degisken1 öğesini, aksi takdirde degisken2 öğesini döndürür.
&&=
logical AND assignment
(mantıksal ve işleminin sonucunu atama)
degisken1 öğesine degisken1&°isken2 değerini atar. ! logical NOT (mantıksal değil) Bir değişkenin veya ifadenin Boolean değerini tersine çevirir.
||
logical OR
(mantıksal ya da)
true değerindeyse veya true değerine dönüştürülebiliyorsa degisken1 öğesini, aksi takdirde degisken2 öğesini döndürür. ||= logical OR assignment (mantıksal ya da işleminin sonucunu atama) degisken1 öğesine degisken1 || degisken2 değerini atar.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
16
8. Operato r Ayrıntıları ve Kullanım O rnekleri
= ATAMA (assignment) OPERATÖRÜ
Kullanım ifade1 = ifade2
ÖRNEKLER
a değişkenine 5 değerini atamak için:
var a:Number = 5;
a değişkenine "merhaba" değerini atamak için :
var a:String;
a = "merhaba";
+ TOPLAMA (addition) OPERATÖRÜ Sayısal ifadeleri ekler. Her iki ifade tam sayı olursa, toplam da bir tam sayı olur; ifadelerden biri veya her ikisi ondalık sayısı olursa, toplam da bir ondalık sayısı olur. String ifadeler toplanmak yerine birleştirilir. Kullanım ifade1+ ifade2 ÖRNEKLER Aşağıdaki ifade, 2 ve 3 tam sayılarını toplar ve Output ekranına 5 yazadırır:
trace(2 + 3); // 5 Aşağıdaki ifade, 2,5 ve 3,25 ondalık sayılarını toplar ve Output ekranına 5.75 yazdırır:
trace(2.5 + 3.25); // 5.75
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
17 Toplanmak istenen değerler string ise sayısal bir toplama yapılmaz değerler birleştirilir.
var universite:String = "OGU";
var bolum:String = "BOTE";
var okulBilgisi:String = universite + bolum;
trace(okulBilgisi); // Output: OGUBOTE Yalnızca bir ifade bile string olursa, diğer tüm ifadeler string türüne dönüştürülür ve birleştirilir:
var ad:String="Ayse"
var yas:int=8
var kullaniciBilgisi:*; // veri türü belirtilmiyor
kullaniciBilgisi =ad+yas; /*toplama işleminden sonra kullaniciBilgisi değişkeninin türü otomatik olarak String olarak atanır. */
trace(kullaniciBilgisi) ; // Output: Ayse8 Dinamik alanlarla ve girdi metni alanlarıyla ilişkilendirilmiş değişkenler String veri türünü içerir. Aşağıdaki örnekte, kullanıcı kalvyeden gelen ürün sayısını gelenUrunSayisi.text isimli metin alanına girmektedir. Daha sonra depodaki ürün sayısı ile gelen ürün sayısı toplanıp mevcut stok hesaplanmaktadır. Mevcut stoğu bulmak için aşağıdaki gibi bir kod yazılırsa tür uyuşmazlığı hatası alınır.
var depodakiUrunSayisi:Number=1345;
var mevcutStok=gelenUrunSayisi.text + depodakiUrunSayisi;
trace(mevcutStok); Hata almamak için metin alanındaki string değeri sayısal veri türüne dönüştürmek gerekir.
var depodakiUrunSayisi:Number = 1345;
var mevcutStok= Number(gelenUrunSayisi.text) + depodakiUrunSayisi;
trace(mevcutStok);
++ ARTTIRMA (increment) OPERATÖRÜ
Kullanım
++ifade
ifade++
Bir ifadeye 1 ekler. ifade, bir değişken, dizideki bir öğe veya bir nesne özelliği olabilir. Operatörün artırma öncesi formu (++ifade), ifade öğesine 1 ekler ve sonucu döndürür.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
18
Operatörün artırma sonrası formu (ifade++), ifade öğesine 1 ekler ve ifadenin başlangıç değerini (ekleme öncesi değer) döndürür. Bazı döngülerin içerisinde bu durum önemli olmaktadır.
ÖRNEKLER Aşağıdaki kod parçası output ekranına 8 yazdırır. i değişkeninin değeri 9 olduğu halde “degisken++” degisken öğesinin başlangıç değerini (ekleme öncesi değer) döndürdüğü için output ekranında 8 yazar.
var i:int=8;
trace (i++); //Output: 8
Aşağıdaki kod parçası output ekranına 9 yazdırır. “++degisken” degisken öğesine 1 ekleyip sonucu döndürdüğü için output ekranında 9 yazar.
var i:int=8;
trace (++i); //Output: 9
- ÇIKARTMA (subtraction) OPERATÖRÜ
Kullanım - ifade1 ifade1 - ifade2
Kullanım 1: Operatör, negatif yapma için kullanıldığında, sayısal bir ifadenin işaretini ters çevirir.
Kullanım 2: Operatör, çıkarma için kullanıldığında, ifade1 öğesinden ifade2 öğesini çıkararak iki sayısal ifade üzerinde aritmetik bir çıkarma işlemi gerçekleştirir. Her iki ifade tam sayı olduğunda, fark da bir tam sayıdır. İfadelerden biri veya her ikisi ondalık sayısı olduğunda, fark da bir ondalık sayısıdır.
ÖRNEK
Kullanım 1: Aşağıdaki kod, 2 + 3 ifadesinin işaretini ters çevirerek output ekranına -5 yazdırır:
trace(-(2 + 3)); // Output: -5
Kullanım 2: Aşağıdaki ifade, 5 tam sayısından 2 tam sayısını çıkarır. Sonuçta elde edilen 3 bir tam sayıdır.
trace(5 - 2); // 3
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
19
Aşağıdaki ifade, 3,25 ondalık sayıdan 1,5 ondalık sayısını çıkarır. Sonuçta elde edilen 1,75 bir ondalık sayıdır.
trace(3.25 - 1.5); // 1.75
ÖNEMLİ: Actionscript 3’de ondalık sayıları yazarken virgül “,” yerine nokta “.” kullanılır.
-- AZALTMA (decrement) OPERATÖRÜ
Kullanım
--ifade
ifade--
Değerden 1 çıkarır. Değer, bir değişken, dizideki bir öğe veya bir nesne özelliği olabilir. Operatörün ifade öncesi formu (--ifade), ifade öğesinden 1 çıkarır ve sonucu döndürür. Operatörün ifade sonrası formu (ifade--), ifade öğesinden 1 çıkarır ve ifadenin başlangıç değerini (eksiltme öncesi değer) döndürür.
ÖRNEKLER
Operatörün eksiltme öncesi formu, a öğesini 2 değerine azaltır (a - 1 = 2) ve sonucu a olarak döndürür:
var a:Number = 3;
var b:Number = --a;
trace (b) // Output: 2
Operatörün eksiltme sonrası formu, a öğesini 2 değerine azaltır (a - 1 = 2) ve a öğesinin orijinal değerini döndürür:
var a:Number = 3;
var b:Number = --a;
trace (b) // Output: 3
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
20
* ÇARPMA (multiplication) OPERATÖRÜ
Kullanım ifade1 * ifade2
İki sayısal ifadeyi çarpar. Her iki ifade tam sayı olduğunda, ürün de bir tam sayıdır. İfadelerden biri veya her ikisi ondalık sayısı olduğunda, sonuç da ondalık olur.
ÖRNEKLER
Aşağıdaki ifade 2 ve 3 tam sayılarını çarparak 6 tam sayısını elde eder:
trace(2*3); // 6
Aşağıdaki ifade, 2,0 ve 3,1416 kayan nokta sayılarını çarparak 6,2832 kayan nokta sayısını elde eder:
trace(2.0 * 3.1416); // 6.2832
% MOD (modulo) OPERATÖRÜ
Kullanım ifade1 % ifade2
ifade2 öğesine bölünen ifade1 öğesinin kalanını hesaplar. Değerlerden herhangi biri sayısal değilse, modulo (%) operatörü bunu bir sayıya dönüştürmeye çalışır.
Modülleme sonucunun işareti, bölünenin (birinci sayı) işaretiyle eşleşir. Örneğin, -4 % 3 ve -4 % -3 öğelerinin ikisi de -1 olarak değerlendirilir.
ÖRNEKLER
trace(12 % 5); // 2
trace(4 % 4); // 0
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
21
/ BÖLME (division) OPERATÖRÜ
Kullanım ifade1 / ifade2
ifade1 öğesini ifade2 öğesine böler.
ÖRNEKLER
trace (12/4) // 3
trace (12.5/2) // 6.25
+= TOPLAMI ATAMA (addition assignment) OPERATÖRÜ
Kullanım ifade1 += ifade2
ifade1 öğesine ifade1 + ifade2 değerini atar. Örneğin, aşağıdaki iki ifade aynı sonucu verir:
x += y;
x = x + y;
Toplama (+) operatörünün tüm kuralları, toplama ataması (+=) operatörü için de geçerlidir.
ÖRNEKLER
var x:Number = 5;
var y:Number = 10;
x += y;
trace (x) // 15
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
22
/= BÖLÜMÜ ATAMA (division assignment) OPERATÖRÜ
Kullanım ifade1 /= ifade2
ifade1 öğesine ifade1 / ifade2 değerini atar. Örneğin, aşağıdaki iki ifade eşdeğerdir:
x /= y;
x = x / y;
ÖRNEKLER
var a:Number = 10;
var b:Number = 2;
a /= b;
trace(a); // 5
%= BÖLÜMDEN KALANI ATAMA (modulo assignment) OPERATÖRÜ
Kullanım ifade1 % = ifade2
ifade1 öğesine ifade1 % ifade2 değerini atar. Aşağıdaki iki ifade eşdeğerdir:
x %= y;
x = x % y;
ÖRNEKLER
Aşağıdaki örnek, a değişkenine 4 değerini atar:
var a:Number = 14;
var b:Number = 5;
a %= b;
trace(a); // 4
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
23
*= ÇARPIMI ATAMA (multiplication assignment) OPERATÖRÜ
Kullanım
ifade1 *= ifade2
ifade1 öğesine ifade1 * ifade2 değerini atar. Örneğin, aşağıdaki iki ifade eşdeğerdir:
x *= y
x = x * y
ÖRNEKLER
a değişkenine 50 değerini atam:
var a:Number = 5;
var b:Number = 10;
trace(a *= b); // 50
Aşağıdaki örneğin ikinci ve üçüncü satırı, eşittir işaretinin sağındaki ifadeleri hesaplar ve sonuçları c ve d öğesine atar:
var i:Number = 5;
var c:Number = 4 - 6;
var d:Number = i + 2;
trace(c *= d); // -14
-= ÇIKARTMA ATAMASI (subtraction assignment) OPERATÖRÜ
Kullanım
ifade1 -= ifade2
ifade1 öğesine ifade1 - ifade2 değerini atar. Örneğin, aşağıdaki iki ifade eşdeğerdir:
x -= y;
x = x - y;
String ifadelerinin sayıya dönüştürülmesi gerekir; aksi takdirde sonuç NaN (not a number (sayı değil)) olur.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
24
ÖRNEKLER
5'ten 10'u çıkarmak için çıkarma ataması (-=) operatörünün kullanır kullanımı:
var x:Number = 5;
var y:Number = 10;
x -= y;
trace(x); // -5
Aşağıdaki kod satırındaki string ifadelerde sayı içerdiği halde çalışmaz. “1067: Implicit coercion of a value of type String to an unrelated type Number.” Hatası verir. String ifadelerin sayıya dönüştürülmesi gerekir.
var a:String = "5";
var b:String = "10";
a -= b;
== EŞİTLİK (equality) OPERATÖRÜ
Kullanım
ifade1 == ifade2
İki ifadeyi eşitlik için test eder. İfadeler eşit olursa sonuç true, eşit olmazsa sonuç false olur.
Karşılaştırılan iki ifadenin veri türü aynıysa, eşitlik durumu veri türüne bağlı olarak aşağıdaki gibi olur:
String ifadeleri, aynı sayıda aynı karakterleri içeriyorsa eşittir.
Aynı değerlere sahip olmaları durumunda int, uint ve Boolean türünün değerlerinin eşittir.
Her ikisi de NaN olmadığı sürece, aynı değerlere sahip sayıların eşit olduğu düşünülür.
Her iki işlenenin de değeri null veya undefined olursa, bunların eşit olduğu düşünülür.
Karşılaştırılan iki ifadenin veri türleri farklıysa, aşağıdaki durumlar dışında sonuç false olur:
İfadelerin değerleri undefined ve null olduğunda, sonuç true olur.
Otomatik veri türü dönüştürme, Boolean, int, uint ve Number değerlerinin veri türlerini uyumlu türlere dönüştürdüğünde dönüştürülen değerler eşitse ifadelerin eşit olduğu düşünülür.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
25
ÖRNEKLER
if ifadesiyle eşitlik (==) operatörünü kullanır:
var a:String = "Ayse"
var b:String = "Ayse";
if (a == b) {
trace("Ayse eşittir Ayse");
}
Boolean değerleri sayılara dönüştürülür, burada true değeri 1'e ve false değeri 0'a dönüştürülür.
var c:Number = 1;
var d:Boolean = true;
trace(c == d); // true
var e:Number = 0;
var f:Boolean = false;
trace(e == f); // true
Otomatik tür dönüştürmesi sadece Boolean ve Sayı (Number, int, uint) ifadeler arasında yapılmaktadır. String değerleri için tür dönüştürmesi yapılmaz. String değerleri Boolean değerlerine dönüştürülmez, bu nedenle aşağıdaki ifade false değerini döndürür:
var g:String = "true";
var h:Boolean = true;
trace(g == h); // false
String değerler ve sayı (Number, int, uint) değerler bir birine otomatik olarak dönüştrülmez. Örneğin aşağıdaki kod tür uyuşmazlığı hatası (1176: Comparison between a value with static type Number and a possibly unrelated type String) verir.
var a:Number = 5;
var b:String = "5";
trace(a == b);
kodun doğrusu aşağıdaki gibi olmalıdır.
var a:Number = 5;
var b:String = "5";
var c:Number= Number (b)
trace(a == c); // true
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
26
> BÜYÜKTÜR (greater than) OPERATÖRÜ
Kullanım
ifade1 > ifade2
İki ifadeyi karşılaştırır ve ifade1 öğesinin ifade2 öğesinden büyük olup olmadığını belirler; büyük olması durumunda sonuç true olur. ifade1 öğesi, ifade2 öğesinden küçük veya bu öğeye eşit olursa, sonuç false olur.
Her iki ifade de String türündeyse, ifadeler alfabetik sırayla karşılaştırılır; tüm büyük harfler küçük harflerden önce gelir. İfadeler alfebatik karakter değil rakamsa ilk önce sayıya dönüştürülür ve sonra karşılaştırılır.
ÖRNEKLER
Aşağıdaki örnek, büyük harfler küçük harflerden önce gelecek şekilde string ifadelerin alfabetik olarak karşılaştırıldığını gösterir:
var a:String = "first";
var b:String = "First";
trace(a > b); // true
var d:String = "4";
var e:String = "5";
trace(e > d); // true
Boolean değerleri otomatik olarak sayıya dönüştürülür:
var e: Number = 2;
var f:Boolean = true;
trace(e > f); // true
>= BÜYÜK EŞİT (greater than or equal to) OPERATÖRÜ
Kullanım
ifade1 >= ifade2
İki ifadeyi karşılaştırır ve ifade1, ifade2’den büyük veya eşitse true değerini; ifade1, ifade2’den küçükse false değerini döndürür.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
27
ÖRNEKLER
Geçerli saatin 12'den büyük mü yoksa 12'ye eşit mi olduğunu belirlemek için büyüktür veya eşittir (>=) operatörü kullanılır:
if (new Date().getHours() >= 12) {
trace("Tünaydın");
} else {
trace("Günaydın");
}
Boolean, Number, int, uint ifadeleri arasında otomatik tür dönüştürme yapılmaktadır.
var a: Number = 2;
var b:Boolean = true;
trace(a != b); // true
var c: Number = 1;
var d:Boolean = true;
trace(c != d); // false
var e: Number = 1;
var f:uint = 1;
trace(e != f); // false
!= EŞİT DEĞİL (inequality) OPERATÖRÜ
Kullanım
ifade1 != ifade2
Eşitlik (==) operatörünün tam tersi için test yapar. ifade1 ile ifade2 eşit olursa, sonuç false olur. Eşitlik (==) operatöründe olduğu gibi, eşitlik durumu, karşılaştırılan veri türlerine bağlıdır.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
28
Karşılaştırılan iki ifadenin veri türü aynıysa, eşitlik durumu veri türüne bağlı olarak aşağıdaki gibi olur:
String ifadeleri, aynı sayıda aynı karakterleri içeriyorsa eşittir.
Aynı değerlere sahip olmaları durumunda int, uint ve Boolean türünün değerlerinin eşittir.
Her ikisi de NaN olmadığı sürece, aynı değerlere sahip sayıların eşit olduğu düşünülür.
Her iki işlenenin de değeri null veya undefined olursa, bunların eşit olduğu düşünülür.
Karşılaştırılan iki ifadenin veri türleri farklıysa, aşağıdaki durumlar dışında sonuç false olur:
İfadelerin değerleri undefined ve null olduğunda, sonuç true olur.
Otomatik veri türü dönüştürme, Boolean, int, uint ve Number değerlerinin veri türlerini uyumlu türlere dönüştürdüğünde ve dönüştürülen değerler eşitse ifadelerin eşit olduğu düşünülür.
ÖRNEKLER
Aşağıdaki örnek eşitsizliğin sonucunu gösterir (! =) operator:
trace(5 != 8); // true
trace(5 != 5); // false
if ifadesinde eşitsizlik (!=) operatörünün kullanımını:
var a:String = "Ankara";
var b:String = "İstabul";
if (a != b) {
trace("Girilen şehirler eşleşmiyor");
}
< KÜÇÜK (less than) OPERATÖRÜ
Kullanım
ifade1 < ifade2
İki ifadeyi karşılaştırır ve ifade1 öğesinin ifade2 öğesinden küçük olup olmadığını belirler; küçük olması durumunda sonuç true olur. ifade1 öğesi, ifade2 öğesinden büyükse veya bu öğeye eşit olursa, sonuç false olur.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
29
Her iki ifade de String türündeyse, ifadeler alfabetik sırayla karşılaştırılır; tüm büyük harfler küçük harflerden önce gelir. İfadeler alfebatik karakter değil rakamsa ilk önce sayıya dönüştürülür ve sonra karşılaştırılır.
ÖRNEKLER
Hem sayı hem de string karşılaştırmalarının true ve false sonuçları:
trace(5 < 10); // true
trace(2 < 2); // false
trace(10 < 3); // false
trace("11" < "3"); // true
trace("C" < "abc"); // true
trace ("a"<"b") // true
trace ("a"<"B") // false
trace ("a"<"A") // false
trace("A" < "a"); // true
trace("Ali" < "Hale"); // true
trace("Hale"< "Ali"); // false
trace("ali" < "Hale"); // false
trace("11" < 3); /* tür uyuşmazlığı hatası (1176: Comparison between a value with static type String and a possibly unrelated type int.) */
<= KÜÇÜK EŞİT (less than or equal to) OPERATÖRÜ
Kullanım
ifade1 <= ifade2
İki ifadeyi karşılaştırır ve ifade1 öğesinin ifade2 öğesinden küçük veya bu öğeye eşit olup olmadığını belirler; küçük veya eşit olması durumunda sonuç true olur. ifade1 öğesi ifade2 öğesinden büyükse, sonuç false olur.
Her iki işlenen de String türündeyse, işlenenler alfabetik sırayla karşılaştırılır; tüm büyük harfler küçük harflerden önce gelir. İfadeler alfebatik karakter değil rakamsa ilk önce sayıya dönüştürülür ve sonra karşılaştırılır.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
30
ÖRNEKLER
Hem sayı hem de string karşılaştırmalarının true ve false sonuçları:
trace(5 <= 10); // true
trace(2 <= 2); // true
trace(10 <= 3); // false
trace("11" <= "3"); // true
trace ("a"<="b") // true
trace ("a"<="B") // false
trace ("a"<="A") // false
trace("A" <= "a"); // true
trace("Ali" <= "Hale"); // true
trace("Hale"<= "Ali"); // false
trace("ali" <= "Hale"); // false
trace("11" <= 3); /* tür uyuşmazlığı hatası (1176: Comparison between a value with static type String and a possibly unrelated type int.) */
=== KATI EŞİTLİK (strict equality) OPERATÖRÜ
Kullanım
ifade1 === ifade2
Eşitlik için iki ifadeyi test eder ancak sayılar (Number, int ve unit) hariç otomatik veri dönüştürmesini gerçekleştirmez. Veri türleri de dâhil olmak üzere her iki ifade eşit olursa, sonuç true olur.
Katı eşitlik (===) operatörü, eşitlik (==) operatörünün benzerliği:
String ifadeleri, aynı sayıda aynı karakterleri içeriyorsa eşittir.
Katı eşitlik (===) operatörü ve eşitlik (==) operatörünün farklılığı:
null ve undefined karşılaştırdığında, katı eşitlik operatörü false değerini döndürür.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
31
ÖRNEKLER
Aşağıdaki örnek, hem değer hem de veri türleri eşleştiğinde, katı eşitliğin (===) eşitlik (==) ile aynı olduğunu gösterir:
var string1:String = "5";
var string2:String = "5";
trace(string1 == string2); // true
trace(string1 === string2); // true
Aşağıdaki örnek, katı eşitlik operatörünün Boolean değerlerini sayılara dönüştürmediğini ancak eşitlik operatörünün bu dönüştürmeyi yaptığını gösterir:
var n:Number = 1;
var b:Boolean = true;
trace(n == b); // true
trace(n === b); // false
Katı eşitlik operatörü Number, int ve uint veri türlerini dönüştürmektedir:
var num1:Number = 1;
var num2:int = 1;
var num3:uint = 1;
trace(num1 === num2); // true
trace(num1 === num3); // true
Aşağıdaki örnek, katı eşitlik operatörünün null ve undefined değerlerini eşit değerlendirmediğini ancak eşitlik operatörünün bunları eşit değerlendirdiğini gösterir:
trace(null == undefined); // true
trace(null === undefined); // false
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
32
!== KATI EŞİTŞİZLİK (strict inequality) OPERATÖRÜ
Kullanım
ifade1 !== ifade2
Katı eşitlik (===) operatörünün tam tersi için test yapar. ifade1 ile ifade2 eşit olursa ve bunların veri türleri eşitse sonuç false olur.
Katı eşitlik (===) operatörü ve eşitlik (==) operatörünün benzerliği:
String ifadeleri, aynı sayıda aynı karakterleri içeriyorsa eşittir.
Katı eşitlik (===) operatörü ve eşitlik (==) operatörünün farklılığı:
null ve undefined karşılaştırdığında, katı eşitlik (!==) operatörü true değerini döndürür.
ÖRNEKLER
var s1:String = "5";
var s2:String = "5";
var s3:String = "Hello";
var n:Number = 5;
var b:Boolean = true;
trace(s1 !== s2); // false
trace(s1 !== s3); // true
trace(s1 !== b); // true
trace(s1 !== n); /* tür uyuşmazlığı hatası (1176: Comparison between a value with static type String and a possibly unrelated type int.) */
&& MANTIKSAL VE (logical AND) OPERATÖRÜ
Kullanım
ifade1 && ifade2
Eğer her iki ifade de Boolean türünde değilse; false değerindeyse veya false değerine dönüştürülebiliyorsa ifade1 öğesini, aksi takdirde ifade2 öğesini döndürür. false değerine dönüştürülebilen değer örnekleri arasında 0, NaN, null ve undefined yer alır.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
33
Eğer her iki ifade de Boolean türündeyse, aşağıdaki tabloda gösterildiği gibi, yalnızca her iki işlenen de true değerinde olursa, sonuç true olur:
Tablo 10: Boolean ifadeler ve mantıksal ve (&&) İşlemi İfade Değerlendirme true && true true true && false false false && false false false && true false
ÖRNEKLER
Örneğin, bir oyuncunun oyunu kazanıp kazanmadığını belirlemek üzere bir test uygulamak için mantıksal AND (&&) operatörünü kullanır. Oyuncu, oyun sırasında ilerlediğinde veya puan kazandığında denemeSayisi değişkeni ve score değişkeni güncellenir. Oyuncunun en fazla üç denemede 75 puan aldığında oyunu kazandığını düşünelim. Bu bağlamda, üç veya daha az deneme sonucunda oyuncunun puanı 75 ya da daha yüksek bir değer olduğunda, komut dosyası "Oyunu kazandınız!" mesajını verir.
var denemeSayisi:Number = 2;
var score:Number = 77;
if ((denemeSayisi<= 3) && (score >= 75)) {
trace("Oyunu kazandınız!")
} else {
trace("Tekrar deneyin!");
}
Karşılaştırma operatörleri (==, !=, >,<, <= vs.) Boolean sonuç döndürdüğünden, yukarıdaki örnekte verilen if ifadesinin içerindeki “mantıksal ve (&&)” işlemi Tablo 10’a göre yapılmıştır.
Mantıksal ve işlemi (&&) eğer her iki ifade de Boolean türünde değilse; false değerindeyse veya false değerine dönüştürülebiliyorsa ifade1 öğesini, aksi takdirde ifade2 öğesini döndürür.
var n:Number = 5;
var b:Boolean = true;
trace (n&&b) /* Output: true (Birinci değer (n) false olmadığı için ikinci değeri(b) döndürdü. */
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
34
var a:Boolean;
a= (n&&b)
trace (a) // Output: true
Yukarıdaki kod parçacığında (n&&b) ifadesinde n=5 olduğu yani false olmadığı için b değerini yani “true” döndürür. (n&&b), Boolean bir ifade döndürdüğünden sonucu Boolean bir değere atanbilirilir. O yüzden a değişkeni Boolean olarak tanımlanmıştır, aksi takdirde tür uyşmazlığı hatası alınır.
&&= MANTIKSAL VE İŞLEMİNİN SONUCUNU ATAMA (logical AND assignment) OPERATÖRÜ
Kullanım
ifade1 &&= ifade2
ifade1 öğesine ifade1 && ifade2 değerini atar. Örneğin, aşağıdaki iki ifade eşdeğerdir:
x &&= y;
x = x && y;
Eğer her iki ifade de Boolean türünde değilse; false değerindeyse veya false değerine dönüştürülebiliyorsa ifade1 öğesini, aksi takdirde ifade2 öğesini döndürür ve ifade1’e atar.
ÖRNEKLER
var a:Boolean; // varsayılan değer false
var b:Boolean = true;
a&&=b
trace(a) // Output: false (false && true nun sonucu false , Tablo 10)
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
35
Eğer her iki ifade de Boolean türünde değilse; false değerindeyse veya false değerine dönüştürülebiliyorsa ifade1 öğesini, aksi takdirde ifade2 öğesini döndürür ve ifade1’e atar. false değerine dönüştürülebilen değer örnekleri arasında 0, NaN, null ve undefined yer alır. Aşağıdaki örnekte s1 değikeninin varsayılan değeri null olduğundan s1 değeri döner ve tekrar s1’e atanır.
var s1:String;
var s2:String = " Merhaba";
s1&&=s2
trace(s1) // Output: null
s1 değeri null değil de boşluk (" ") veya sıfır ("0") değerleri de dâhil olmak üzere herhangi bir string ifade olduğunda, s2 değeri döner.
var s1:String="0";
var s2:String = "Merhaba";
s1&&=s2
trace(s1) // Output: Merhaba
s1 değeri boş ("") olduğunda true değeri döner.
var s1:String="";
var s2:String = "Merhaba";
s1&&=s2
trace(s1) // Output: true
! MANTIKSAL DEĞİL (logical NOT) OPERATÖRÜ
Kullanım
!ifade
Bir değişkenin veya ifadenin Boolean değerini tersine çevirir. ifade öğesi, true mutlak veya dönüştürülmüş değerine sahip bir değişkense, !ifade öğesinin değeri false olur. Örneğin, x && y ifadesi false olarak değerlendirilirse, !(x && y) ifadesi true olarak değerlendirilir.
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
36
Aşağıdaki ifadeler, mantıksal NOT (!) operatörünün kullanılmasının sonucunu gösterir:
!true öğesi false değerini döndürür.
!false öğesi true değerini döndürür.
ÖRNEKLER
Şu örnekte, mutlu değişkeni false olarak ayarlanır. if koşulu !mutlu koşulunu değerlendirir, koşul true ise, trace() ifadesi bir dize çıktısı verir.
var mutlu:Boolean = false;
if (!mutlu) {
trace("don't worry, be happy"); // Output: don't worry, be happy
}
!false değeri true değerine eşit olduğundan, trace ifadesi çalıştırılır.
|| MANTIKSAL YA DA (logical OR) OPERATÖRÜ
Kullanım
ifade1 || ifade2
Eğer her iki ifade de Boolean türünde değilse; true değerindeyse veya true değerine dönüştürülebiliyorsa ifade1 öğesini, aksi takdirde ifade2 öğesini döndürür.
Eğer her iki ifade de Boolean türündeyse, ifadelerin biri veya ikisi true olduğunda sonuç true olur; yalnızca her iki ifade de false olduğunda sonuç false olur:
Tablo 11: Boolean ifadeler ve mantıksal ya da (&&) İşlemi İfade Değerlendirme true || true true true || false true false || false false false || true true
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
37
ÖRNEKLER
Aşağıda if ifadesinde mantıksal ya da (||) operatörünü kullanır. İkinci ifade true olduğundan sonuç true olur:
var a:Number = 10;
var b:Number = 250;
var basla:Boolean = false;
if ((a > 25) || (b > 200) || (basla)) {
trace("logical OR başarıyla çalıştı!"); // logical OR başarıyla çalıştı!
}
||= MANTIKSAL YA DA İŞLEMİNİN SONUCUNU ATAMA (logical OR assignment) OPERATÖRÜ
Kullanım
ifade1 ||= ifade2
ifade1 öğesine ifade1 || ifade2 değerini atar. Aşağıdaki iki ifade eşdeğerdir:
x ||= y;
x = x || y;
Eğer her iki ifade de Boolean türünde değilse; true değerindeyse veya true değerine dönüştürülebiliyorsa ifade1 öğesini, aksi takdirde ifade2 öğesini döndürür ve ifade1’e atar.
Her iki ifade de Boolean veri türü üyesiyse sonuç bir Boolean değeri. Aksi takdirde sonuç, iki ifadeden birinin değeri olur.
ÖRNEKLER
Aşağıdaki örnekte s1||=s2 işleminde s1 değikeninin varsayılan değeri null olduğundan s2 değeri döner ve s1’e atanır.
var s1:String;
var s2:String = "Merhaba";
s1||=s2
trace(s1) // Output: Merhaba
EGC DERSİ:FLASH ACTIONSCRIPT 3.0 VERİ TÜRLERİ VE OPERATÖRLER, Ozlem Ozan © 2010
38
s1 değeri null değil de boşluk (" ") veya sıfır ("0") değerleri de dâhil olmak üzere herhangi bir string ifade olduğunda true olarak algılanır ve s1 değeri döner.
var s1:String="0";
var s2:String = " Merhaba ";
s1||=s2
trace(s1) // Output: 0
s1 değeri boş ("") olduğunda s1 değeri false olarak algılanır, s2 değeri döner ve s1’e atanır.
var s1:String="";
var s2:String = "Merhaba";
s1||=s2
trace(s1) // Output: Merhaba
KAYNAKLAR
Bu dökümandaki bilgiler aşağıdaki sitelerdeki içerik temel alınıp, sadeleştirilerek, cümle düşüklükleri ve anlatım bozukluklukları giderilerek düzenlenmiştir.
http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/all-index-Symbols.html
http://help.adobe.com/tr_TR/FlashPlatform/reference/actionscript/3/operators.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6
Kaydol:
Kayıtlar (Atom)