|
|
Actionscript 2.0 Veri Türleri (1)
Actionscript 2.0 Veri Türleri (1)
Kategori |
: Flash |
Yorum Sayısı |
: 0 |
Okunma |
: 980 |
Tarih |
: 09 Mart 2008 03:55 |
Giriş & String Veriler
Actionscript 2.0 veri türleri
Son yazımızda actionscript 2.0 daki veri türlerinden kabaca bahsetmiştik, bu yazımızda veri türlerine derinlemesine bir bakış atacağız.
STRING VERİLER
String veriler, pek çok programlama dilinden alışkın olduğumuz gibi, çift tırnak içerisine yazılırlar ve karakter gruplarının saklanmasında kullanılır. Stringlerin kullanımını bir örnekle açıklayalım;
var currentUser = "hakan"; //string bir degisken
String verilerin kullanımına diğer bir örnek te, server side uygulamalar ile çalışırken (ASP, PHP vb..) gönderilen / alınan querystring bilgisidir.
var strUrl = "http://www.byte.com.tr"; var adres = "http://mail.abc.com/curmbox";
yukarıdaki örneklerde dikkat etmemiz gereken nokta, özel karakterlerin bolca kullanıldığıdır. Çoğu zaman bu karakterlerin querystring bilgisi olarak gönderilirken (ya da alınırken) URL-Encoded formatına çevrilmesi gerekir. Actionscript bunun için bize escape() ve unescape() fonksiyonlarını sunar. Örneğimizi aşağıdaki şekilde tekrar yazalım;
var strUrl = "http://www.byte.com.tr"; var encoded = escape(strUrl);
trace(strUrl); //ciktisi http://www.byte.com.tr olacaktir. trace(encoded); //ciktisi http%3A%2F%2Fwww%2Ebyte%2Ecom%2Etr olacaktir.
benzer durum, sunucu taraflı uygulamanın flash' a URL-Encoded string göndermesi şeklinde de meydana gelebilir. O zaman gelen veriyi aktüel şeklie çevirmek için unescape fonksiyonu kullanılır.
var encoded = "http%3A%2F%2Fwww%2Ebyte%2Ecom%2Etr"; var decoded = unescape(encoded);
trace(decoded); //ciktisi http://www.byte.com.tr olacaktir.
Elbette string verilerin manipulasyonu için actionscript baska metodlar da sunmaktadır. Ancak bunları Sınıfları incelemeye başladığımızda, String sınıfını anlatırken inceleyeceğiz.
eval() fonksiyonu
Bazı durumlarda (örneğin dinamik olarak isimlendirilmiş movieclip örneklerine erişirken) string ifadeler ile çalışmamız gerekebilir.
Örnek için, sahneye bir şekil çizin ve movieclip' e çevirin. instanceName olarak myMovieClip veriniz.
var movieClipName = "myMovieClip"; movieClipName._alpha = 0;
yukarıdaki örneği çalıştırdığınızda, hiçbirşey olmadığını ve çizdiğiniz şeklin aynen durduğunu göreceksiniz. Oysa biz instanceName' i movieClipName değişkeninin değeri olan nesnemize erişmek istiyoruz..
eval() fonksiyonu, parametre olarak aldığı string ifadenin değişken ya da nesne olarak karşılığını bulur ve döndürür. Bulamazsa nothing döndürür. Örneğimizi aşağıdaki şekilde tekrar düzenleyelim;
var movieClipName = eval("myMovieClip"); movieClipName._alpha = 0;
çalıştırdığınızda, çizdiğiniz şeklin görünmediğini göreceksiniz. sahneden movieclip nesnenizi kaldırın (silin) ve koda aşağdaki satırı ekleyip tekrar çalıştırın;
trace(movieClipName);
çıktının nothing olduğunu göreceksiniz.
eval fonksiyonu aynı şekilde değişkenlere erişmek içinde kullanılabilir. Aşağıdaki örnek bu durumu açıklamaktadır.
var a = "ben a degiskeniyim"; var b = eval("a");
trace(b); //ciktisi ben a degiskeniyim olacaktir.
Sayısal Veriler
Actionscript te sayısal veriler her türlü aritmetik işlemin yapılmasında kullanılır. Sayısal değişkenlere değer ataması sırasında tırnak işareti kullanılmaz.
var sayi = 15; var ondalik = 12.5; var negatif = -8;
var sayiDegil = "20"; //bu degisken sayisal degil, string olur.
sayısal veriler istenildiği gibi aritmetik işleme sokulabilirler, örneğin;
carpim = sayi*negatif; trace("carpim: "+carpim); //ciktisi carpim: -120 olacaktir.
fark = sayi-ondalik; toplam = sayi+10;
actionscript, aritmetik hesaplama yaparken işlem önceliğini dikkate alır. Bunu istediğimiz gibi düzenlemek için parantez operatorunden yararlanırız.
var a= -3; var b = 7; var c = 2;
var oncelikli = (a-b)*c; var onceliksiz = a-b*c;
trace(oncelikli); // -20 trace(onceliksiz); // -17
SAYISAL VERİLERİN DENETİMİ:
Sayısal verilerle çalışırken pek çok kez bir işlemin ya da atamanın sonucunun geçerli bir veri olup olmadığını kontrol etmemiz gerekebilir. Böyle durumlarda;
isNaN ve isFinite fonksiyonları kullanılır.
isNaN(ifade) fonksiyonu, parametre olarak girilen ifadenin sayısal bir değer olup olmadığını test etmek için kullanılır. isNaN fonksiyonu sanılanın aksine eğer değer sayısal bir değerse false, sayısal olmayan bir değerse true döndürür.
(isNaN = is Not a Number = sayı değil mi)
aşağıdaki örnekleri inceleyiniz;
var x = "ismail"; var y = "46ali"; var z = "70"; var f = 16;
trace(isNaN(x)); //true trace(isNaN(y)); //true trace(isNaN(z)); //false trace(isNaN(f)); //false
dikkat etmenizi istediğim bir nokta da, isNaN fonksiyonunun değerlendirme yaparken veri türlerini dikkate almadığıdır. sayısal bir değer barındıran string türünden bir ifade dahi bu fonksiyon tarafından sayı olarak algılanacaktır. Yukarıdaki örnekte bunu görebiliriz.
isFinite fonksiyonu ise, parametre olarak girilen degerin geçerliliğini kontrol eder. En etkin kullanım alanı, sıfıra bölünme hatalarından kaçınmak için olan kullanımıdır.
var a = 20; var b = 15;
var sonuc = 20/(b-15);
trace(isFinite(sonuc)); //false dondurur.
Yukarıdaki örnekte, ilk bakışta tüm değerlerin sayısal olduğunu görebiliriz, ancak iyi bir inceleme ile, sonuc degiskeninin 20/0 olacağını da görmemiz gerekir. Bu durum programcılıkta "Division by zero" (sıfıra bölme) hatası olarak adlandırılır.
isFinite fonksiyonu bu durumda false değerini döndürerek bizi yönlendirecektir.
Sayısal Verilerin Dönüştürülmesi
Sayısal verilere ait ele alacağımız son konu da tür dönüşümü.
parseFloat(string) : bu fonksiyon, parametre olarak girilen string ifadeyi sayısal bir ifade olarak döndürür. Girilen parametre sayısal bir değer taşımadığı durumda fonksiyon NaN döndürecektir. Örneğin:
var sayi = "46"; var x = 10;
trace(sayi+x); //ciktisi 4610 olacaktir.
var sayi = "46"; var x = 10; var sayiF = parseFloat(sayi);
trace(sayiF+x); //ciktisi 56 olacaktir.
parseFloat fonksiyonu, dönüşüm yaparken sayısal olmayan bir karaktere rastladığında durur. Örneğin;
var sayi = "16FHJ84"; var parsed = parseFloat(sayi);
trace(parsed); //ciktisi 16 olacaktir.
Peki, diyelim ki actionscript ile Hexadecimal sayıları kullanarak işlem yapmanız gerekti o zaman ne yapacağız. Bildiğiniz gibi hexadecimal (16 lık) sayılar 1,2,3,4,5...,8,9,A,B,C,D,E,F şeklindedir. yani onluk sistemdeki 10 sayısı hex sistemde A sayısına karşılık gelir.
Bu gibi durumlarda parseInt fonksiyonu yardımımıza koşmaktadır;
parseInt fonksiyonu, opsiyonel ikinci parametresi kullanılmadığında parseFloat ile aynı işi yapmaktadır. Ek olarak ondalık sayıların ondalık kısmını atıp sadece tam kısmını döndürür.
Opsiyonel ikinci parametre girildiğinde ise, bu fonksiyon taban dönüşümü yapmaktadır. aşağıdaki örnekleri inceleyiniz;
var hexSayi = "FA"; //250 var decSayi = 50;
//250 + 50 islemini yapmak istiyoruz..
var converted = parseInt(hexSayi,16); trace(converted); //ciktisi 250 olacaktir var sonuc = converted + decSayi; trace(sonuc); //ciktisi 300 olacaktir. Uygulama: Hex renk kodlarını RGB ye çevirin
Aşağıdaki uygulama Hexadecimal olarak girilen renk kodunu, rgb (red, green, blue) formatına çeviren fonksiyondur.
Timeline üzerinde, boş bir keyframe e yazabilirsiniz.
function hex2RGB(hexValue) { trace("hex deger: "+hexValue); //bu degiskenler, string bicimli hexadecimal //renk kodundan, RED GREEN BLUE değerlerini //yine hex olarak almak icin kullanilmistir. var hexR = hexValue.substr(0,2); var hexG = hexValue.substr(2,2); var hexB = hexValue.substr(4,2); //bizi ilgilendiren kisim buradan asagisi.. var decimalR = parseInt(hexR,16); //RED var decimalG = parseInt(hexG,16); //GREEN var decimalB = parseInt(hexB,16); //BLUE
trace("Dönüştürme sonucunda "+hexValue+" sayısı"); trace("R: "+decimalR+"\nG: "+decimalG+"\nB: "+decimalB); trace("olarak RGB bileşenlerine ayrıldı.");
}
//kullanmak icin cagiriyoruz. hex2RGB("FF8800");
bu uygulamanin ciktisi asagidaki sekilde olacaktir.
hex deger: ff8800 Dönüştürme sonucunda ff8800 sayısı R: 255 G: 136 B: 0 olarak RGB bileşenlerine ayrıldı.
Yazdırılabilir Sayfa |
Word'e Aktar |
Tavsiye Et
| Yorum Yaz
Flash |
En Çok Okunan Makaleler |
|
|
|
|
Seçtiklerimiz
|