XML den Aldığımız Veriye Göre Mc Çoğaltımı ve Veri Atama
Ertuğrul Erkan Tarih: 17/08/2008 Yorum: 4 adet
Okunma : 467 Tutanlar: Bu yazıyı 1 kişi tuttu.
Öncelikle herkese merhaba. Herkesin bildiği gibi As2 de xml işlemleri çok az As3 e benziyor. Yeni başlayanlar sorun çekmesin diye bu dersi anlatmayı uygun gördüm.
Diyelim Xml dosyamızın yapısı şu:
.
<veri>
<bilgi>
<yazi></yazi>
</bilgi>
<bilgi>
<yazi></yazi>
</bilgi>
</veri>
Bu dosyaya göre yapmak istediklerimiz; mc çoğaltmak ve çoğaltılan mc içindeki text lere <yazi> verisini atamak.
O zaman kodlarımız şunlar:
Öncelikle bir kare oluşturun. Üstünede yazi_txt diye bir dynamic text oluşturun. Sonra bunları mc isimli bir mc ye dönüştürün. Sağ tarafta kütüphaneden bu mc ye sağ tıklayın. Linkage ye tıklatın ve çıkan panelde Export for As ile Export in first frameyi seçin. Class kısmına mc2 yazın.
Daha sonra mc ye geri dönün frame kısmına:
MovieClip(root).mc.visible=false;
import flash.display.MovieClip;
var db_yukleyici:URLLoader = new URLLoader();
var db:XML = new XML();
db_yukleyici.addEventListener(Event.COMPLETE, db_yuklendi);
db_yukleyici.load(new URLRequest("yazi.xml"));
//Burada yazi.xml yani yukarıda verdiğim yapıyı import ediyoruz
function db_yuklendi(event:Event):void {
db = new XML(event.target.data);
var toplam_item:int = db.bilgi.length();
olustur(toplam_item,db);
} //Burada da bilgi sürekli çoğaltıldığından <bilgi> kadar mc olsun diyoruz
function olustur(toplam_item:int,data:XML) {
for (var i:uint; i<toplam_item; i++) {
var mc:mc1 = new mc1();
mc.name = "mc_" + i;
mc.y = i*19;
mc.yazi_txt.text = data.bilgi.kat.text()[i] //Burada çoğaltılan mc içindeki text e sırası ile <yazi> verisi ekliyoruz
addChild(mc);
}
}
yazın.
Böylece xml den gelen verinin çokluğuna göre kütüphaneden mc yi kopyaladık ve yazi_txt ye sırası ile veri yazdık.
Örnek dosya yayınlamadım isteğe göre yapabilirim.
Herkese iyi günler
Kodda kimi hatalar var.
1-) kodun başındaki
MovieClip(root).mc.visible=false
ifadesini silin. Bu ifade yalnız kalmış. false ifadesini true yapan bir blok yok.
Ayrıca zaten sahnede mc bulunmasına gerekte yok. Kod kütüphaneden mc yi sınıf adıyla çağırıp addChild(mc)metoduyla da DisplayList’e ekliyor
2-) Ertuğrul Bey, kütüphanedeki sınıfı mc2 biçiminde adlandırın demiş. Ama siz kütüphanedeki mc nin sınıf adını mc2 değil, mc1 yapın. Çünkü kodda mc2 isminde bir sınıf çağrılmıyor. mc1 çağrılıyor. Ya da kod da mc1 yazan yerleri mc2 diye düzeltin.
3-)Koddaki
mc.yazi_txt.text = data.bilgi.kat.text()[i]
yazan bölüm de hatalı.xml den bu yöntemle null bir değer almaya çalışırsanız, Avm2 size kızar.
Bu bölümü
mc.yazi_txt.text = data.bilgi[i].yazi
biçiminde değiştirin. Tabi, xml dosyasındaki <yazi></yazi> taglarının arasına da birşeyler yazın ki, program size bu taglar arasındakileri göstersin.
ActionScript’in tam hali şu şekilde olmalı
import flash.display.MovieClip; var db_yukleyici:URLLoader = new URLLoader(); var db:XML = new XML(); db_yukleyici.addEventListener(Event.COMPLETE, db_yuklendi); db_yukleyici.load(new URLRequest("test.xml")); //Burada yazi.xml yani yukarıda verdiğim yapıyı import ediyoruz function db_yuklendi(event:Event):void { db = new XML(event.target.data); var toplam_item:int = db.bilgi.length(); trace(toplam_item) olustur(toplam_item,db); } //Burada da bilgi sürekli çoğaltıldığından <bilgi> kadar mc olsun diyoruz function olustur(toplam_item:int,data:XML) { for (var i:uint; i<toplam_item; i++) { trace(i) var mc:mc1 = new mc1(); mc.name = "mc_" + i; trace (mc.name) mc.y = i*19// Buradaki rakam, mc’nin yüksekliğine eşit ya da fazla olmalıdırki mc ler üst üste binmesin mc.yazi_txt.text = data.bilgi.kat.text()[i] addChild(mc) } }
XML yapısı ise şu şekilde olmalı:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <veri> <bilgi> <yazi>bu birinci yazı</yazi> </bilgi> <bilgi> <yazi>bu ikinci yazı</yazi> </bilgi> </veri>
Tüm bunları yaptığınızda örnek çalışır hale gelecektir.
Evet sorunsuz çalıştı.
mc.yazi_txt.text = data.bilgi[i].yazi
Çalışan kod buloğuna burayı eklemeyi unutmuşsunuz.. Php ve as3 ile sql den resim ve bilgileri çekip bunlarıda sayfalamak için uğraşıyorum..Daha yolun başı tabikide..İşallah olur.Teşekkürler
Gazing hocamın sayfalama hakkında dersleri var. İsterseniz oradan bakabilirisiniz. Tek eksik xml ile birleştirmek.
Haber
Etkinlikler
Toplantı
Kahraman ve need4code.com Projesi Connect Toplantısı
Kahraman ve need4code.com Projesi Connect Toplantısı
Selam arkadaslar,
Programlama ile uğraşanların hayatlarını kolaylaştıracak desktop ve web tabanlı ortak iki proje ile ilgili 3. toplantımızı 3Aralık...
Kategori:
Toplantı
Kimler Burada? 
Son 1 dakika içinde MMIstanbul' da 491 (2 kayıtlı, 489 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:
MMIstanbul Blog'undan
Neler Yapılabilir?
Yeni bir portal, 30 civarında online / offline etkinlik, seminer vb rağmen MMIstanbul sanıyoruz ki halen hakettiği ilgiyi göremedi. " ...
500 Hatası Hakkında!
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









ben bu yapıyı çok uğraşmama rağmen çalıştıramadım.. acaba hata bendemi ??? galiba * var mc:mc1 = new mc1();* bu satırda bir yanlışlık var.