Flash ve ActionScript Kullanarak Arama Sonuçlarımızı Highlight Edelim
Yağız Gürgül Tarih: 19/05/2007 Yorum: 0 adet
Okunma : 334 Tutanlar: Bu yazıyı 0 kişi tuttu.
XML ve Flash entegrasyonu, Adobe Flash ortamında dinamik içeriklerinizi arama motoruna nasıl ekleyeceğimizi bir önceki makalelerimizde incelemiştik. Bu yazımızda dinamik metin içerisinde arama sonuçlarına göre bulunan içerikleri nasıl higlight edeceğimizi, yani belirginleştirebileceğimizi inceleyeceğiz. Başmak için önce Adobe Flash Programımızı açalım.
Highlight için metinde arama yapmak gerekir değil mi? Evet gerekir ve bunun içinde flash’ın kendi sağladığı indexOf kullanılır.
Kod:
var kelime:String = "Gazing";
trace(kelime.indexOf("ng"));
deyip test ettiginizde 4 rakamını alırsınız. Yani ng grubunun ilk harfinin satır numarası. Aslında highlight fonksiyonunda bunu kullanabiliriz gibi geliyor ama kullanamayız, işte nedeni:
Kod:
var kelime:String = "macromedia";
trace(kelime.indexOf("a"));
Test ettignizde 1 degeri alırsınız.Yani birinci a harfinin satır numarasını verdi. İşte bu yüzden kullanamayız; çünkü metinde iki tane aynı kelime oldugunda fonksiyon istenileni vermez.
Birinci frame kodunuz:
var arama_kelime:String="a";
/////
function highlight(metin:TextField,kelime:String,renk:Number,bold:Boolean) {
var i:Number = 0;
var metin_parcala:Array = metin.split("");
var kelime_parcala:Array = kelime.split("");
var text_rengi:TextFormat = new TextFormat();
text_rengi.color = renk
text_rengi.bold = bold;
function bul() {
i++
if(metin_parcala[i] == kelime_parcala[0]) {
trace(i);
var bas_harf=i;
var son_harf=i+arama_kelime.length;
if(metin_txt.text.slice(bas_harf,son_harf) == arama_kelime) {
metin_txt.setTextFormat(bas_harf, son_harf, text_rengi);
}
}
if(i>metin_parcala[i]) {
clearInterval(zaman);
}
}
zaman = setInterval(bul,1);
}
Ortama bir kare ve bir de textbox atın.
textbox > tür=dynamic > instance name = metin_txt
kare > tür=buton
olsun. Bundan sonra buton kodunuz:
Kod:
on(release) {
highlight(metin_txt.text,arama_kelime,0xFF0000,true);
}
Buton kodundaki higlight fonksiyonunun:
- 1. parametresi: içinde aranılacak metin
- 2. parametresi: aranılacak kelime
- 3. parametresi: highlight rengi
- 4. parametresi: highlight kalınlıgı
Evet tüm işlem bu. Peki gelelim nasıl çalıştıgına?
Öncelikle split(""); fonksiyonuyla metinin ve kelimenin her harfini tek tek array içine yazıyoruz.
Ardından döngüye sokuyoruz.Aslında for döngüsü de kurulabilirdi; ama metin ve kelime çok uzun olursa sorun yaşanabilir.
Döngü içinde metinin tek tek harfleri ile kelimenin ilk harfi karşılaştırılıyor.
Eger metindeki herhangi bir harf kelime içindeki ilk harfle aynı olursa, devreye slice fonksiyonu giriyor. O andaki buldugu harfin satır numarası i‘dir. Ardından bu i degerine kelimenin uzunlugu ekleniyor. Böylece slice fonksiyonunda kullandığımız bas harf numarası ile son harf numarasını elde etmiş oluyoruz.
Ardından bu iki(bas,son) degerlerini slice içine koyuyoruz ve ortaya bir kelime çıkmış oluyor. Bu kelimeyi de asıl kelime ile karşılaştırıyoruz; eger doğru ise o zaman bu kelimeye text format uyguluyoruz. Eger uyuşmazsa döngüye devam ediyor.
Biraz karışık oldu sanırım. Umarım anlatabilmişimdir… Kolay gelsin…
İçeriğe kayıtlı yorum bulunmuyor. İlk yorumu siz buradan ekleyebilirsiniz.
Haber
MMIstanbul Adobe UG
ColdFusion, Flex, AIR, Flash, PDF, Dreamweaver, Fireworks, Photoshop, Illustrator, INdesign, Premiere, Soundbooth, Lightroom, InCopy, JRun, LiveCycle, Acrobat, AfteEffects, Resmi Adobe Kullanıcı Grubu.
Etkinlikler
Konferans
2. Ulusal Yazılım Mimarisi Konferansı - UYMK'08
2. Ulusal Yazılım Mimarisi Konferansı - UYMK'08
2.Ulusal Yazılım Mimarisi Konferansı (UYMK’08), 11 – 12 Eylül 2008 tarihlerinde Ege Üniversitesi Bilgisayar Mühendisliği Bölümü ev sah...
Kategori:
Konferans
Kimler Burada? 
Son 1 dakika içinde MMIstanbul' da 267 (3 kayıtlı, 264 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:
MMIstanbul Blog'undan
500 Hatası Hakkında!
merhaba arkadaşlar, bir önceki yazıda bahsettiğimiz üzere sunucunun ram ihtiyacını yavaş yavaş gidermeye başladık. An itibariyle 2 Giga d ...
Reklam, MMIstanbul ve Yeni Projeler (Durumumuz Bu Tarzında)
Ne Nedir Kampanyası Başlıyor!
Çok Merak Edenler için; MMIstanbul Geliştirme Ekibi ve Çalışma Ortamımız
MMIstanbul Online Seminerlerine Nasıl Katılabilirim?



