Flash ActionScript XML Arama Sistemi
Yağız Gürgül Tarih: 19/05/2007 Yorum: 0 adet
Okunma : 482 Tutanlar: Bu yazıyı 0 kişi tuttu.
XML ve Flash entegrasyonu bir önceki yazımızda gerçekleştirdik. Bu yazımda da, tüm Flash geliştiricilerinin büyük sorunu olan, Flash ortamında dinamik içeriklerinizi arama motoruna nasıl bağlayabiliceğimizi göreceğiz. Bu yazım diger XML sayfalama sistemindekine benzedigi için oradan birazcık alıntı yapıyorum: Öncelikle yeni bir Flash dokümanı açın ve ortama iki tane text atın.Bunlardan birisi başlıgımız bir digeri de detay olacak.
Bu iki text box’ı sahnede alt alta yerleştirin;
Birinci text box’ın instance name = baslik_txt İkinci text box’ın instance name = detay_txt
Bu ikisini seçin>sağtuş>convert to movieclip>ok dedikten sonra bu iki text bir movieclip içine girmiş oldu.Şimdi bunu seçin ve bunun instance name = icerik_mc olsun.
Ardından gene anasahneye üç tane buton atın.Bunlar sizin ileri geri ve arama butonlarınız olacak.
Bu iki butonun instance name’leri ileribt ve geribt olsun. Diger arama motorunun instance name’i arama_bt olsun.
Ardından ana sahneye bir text box daha atın.Bunun türü Input Text instance name’i de arama_txt olsun.
Evet tüm bu işlemlerden sonra örnek bir xml dosyası hazırlayalım.Önce yeni bir not defteri açın ve aynen şunları yazın:
Kod:
<?xml version="1.0" encoding="utf-8"?>
<icerik>
<item>
<baslik>Flash</baslik>
<detay>Gerçekten muhteşem bir program</detay>
</item>
<item>
<baslik>Adobe</baslik>
<detay>Baya bir zengin olan süper bir firma :)</detay>
</item>
<item>
<baslik>Macromedia</baslik>
<detay>Flash'ın gelecegini fark edip onu satın alan şirket ama sonra kendisi satıldı :)</detay>
</item>
</icerik>
Evet bu belgeyi icerik.xml şeklinde kaydedin .Artık içerigimizi de oluşturdugumuza göre sayfalama sistemine gelelim:
Flashtaki birinci frame kodumuz:
Kod:
icerik_mc._visible=false;
////////////////////////
System.useCodepage = true;
function yukle() {
var db:XML = new XML();
_global.db=db;
db.ignoreWhite = true;
db.load("icerik.xml");
db.onLoad = function(yuklendi) {
if(yuklendi) {
cogalt();
}
}
}
////////////////////////
function cogalt(sayfa_no:Number) {
var j:Number = 0;
toplam_veri = db.firstChild.childNodes.length
bulundu = false;
bulunamadi_mc._visible = bulundu;
for(i=0; i -1 || bakilacak_yer2.toLowerCase().indexOf(arama_txt.text.toLowerCase()) > -1) {
bulundu=true;
var bulunan_mc:MovieClip = icerik_mc.duplicateMovieClip("icerik_mc"+i,i);
bulunan_mc._y =(j*(icerik_mc._height+2))+icerik_mc._y;
bulunan_mc.baslik_txt.text = db.firstChild.childNodes[i].childNodes[0].firstChild.nodeValue.toString();
bulunan_mc.detay_txt.text = db.firstChild.childNodes[i].childNodes[1].firstChild.nodeValue.toString();
j++
}
bulunamadi_mc._visible = bulundu;
}
}
////////////////////////
function sil() {
for(i=0; i
removeMovieClip(this["icerik_mc"+i]);
}
}
////////////////////////
arama_bt.onRelease = function() {
sil();
yukle();
}
Ve çalışmanızı test edin.Örnek olarak Macromedia, Adobe kelimelerini arayabilirsiniz
Şimdi Tam olarak ne diyor bu kod? Bundan önce biraz arama motorunun mantıgını kavrayalım:
Flash içinde indexOf() şeklinde bir kod var.Örnek için yeni bir Flash açın ve birinci frame’e şu kodları yazın:
var str:String = "Flash güzel bir program";
trace(str.indexOf("güzel"));
Ardından çalışmanızı test edin.Görüceksinizki 6 degerini vericek.Bu 6 degeri; cümledeki güzel kelimesi 6. karakterden sonra geliyor anlamında.
Güzel yerine cümledeki bir çok kelimeyi test edin.Hep -1’den büyük bir sayı alırsınız.Ama şimdi içine gazing yazın ve test edin.Bu sefer -1 degeri alıcaksınız.Yani böyle bir kelime yokmuş cümlemizde.
Biraz daha ileri gidelim ve en son açtıgımız Flash içindeki iki satırlık kodu silip şunu yazalım:
Kod:
var db:Array=["Gazing","mmistanbul","flash","xml"];
var aranacak_kelime:String = "a";
for(i=0; i-1) {
trace(db[i]);
}
}
Bu kodumuzda db içine kelimelerimizi yazdık.Bunu bir nevi içerik olarak düşünelim. Ardından aranacak kelime bölümüne a harfini yazdık ve for döngüsünü kurduk.
Bu döngüdeki if şartı: Eger db içindeki aranacak_kelime’nin başladıgı karakter -1’den büyükse bize o db içindeki içeriği göster.
Evet tam anlamıyla budur anlamı.Demin eger o harf yoksa -1 degerini verir; ama bulursa mutlaka -1’den büyük bir sayı verir demiştim.İşte buradaki amacımızda bu… Yani eger o harf varsa deger -1’den büyüktür.
Büyük oluncada i degerine bağlı olarak içeriği gösterir.
Evet mantık bu şekilde.Biz bu array’ı xml ile değiştirdik okadar. Yani biraz daha karmaşık hale getirdik.Neresi karışık derseniz; mesela büyük küçük harf indexOf() komutunda fark eder. Bunun için toLowerCase() fonksiyonunu kullanırız. Yani her iki bilginin (icerik ve aranacak kelime) karakterlerini küçülterek aratırız.
Umarım yeterince açıklayıcı olmuştur..
İçeriğe kayıtlı yorum bulunmuyor. İlk yorumu siz buradan ekleyebilirsiniz.
Haber
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
MMIstanbul Adobe UG
ColdFusion, Flex, AIR, Flash , PDF, Dreamweaver, Fireworks, Photoshop, Illustrator, INdesign, Connect, Premiere, Soundbooth, Contribute, Lightroom, InCopy, JRun, LiveCycle, Acrobat, AfteEffects, Resmi Adobe Kullanıcı Grubu.
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?



