Actionscript 3.0 kullanarak txt dosyasından veri çekmek..-2-
02 Şubat 2010, admin
Gelen istek üzerine bu dersi biraz daha uzatalım. Şöyleki;
Aynı text dosyasından farklı dinamik text alanlarına, birden fazla veri çekelim..
İlk derste, başlangıçta anlattığım konuları burada anlatmayacağım. Sahnemde 3 adet dinamik text alanım var. Bunlar; Başlık, Tarih ve Ana yazı alanları. Örnek isimleri (instance name) sırasıyla; baslik_txt, tarih_txt ve yazi_txt.
Dışarıda, fla dosyası ile aynı dizinde “ex” isimli bir text dosyası var (ex.txt). Bu dosyamın içeriği ise şöyle;
Baslik=Burası Başlık&Tarih=02.02.2010&Yazi=Burası da Anayazı oluyor.
Evet, text dosyasının içinde bulunan yukarıdaki, “&” işareti ile ayırdığım yazıları sırasıyla sahnedeki dinamik alanlara aktaracağım.
Dinamik alanlarımın bulunduğu layerların üzerine, yeni bir layer oluşturdum ve actions panelimi açıyorum (F9). Aşağıdaki kodu actions paneline girdim.
loader.dataFormat = URLLoaderDataFormat.VARIABLES
loader.load(new URLRequest("ex.txt"))
loader.addEventListener(Event.COMPLETE, textLoad)
function textLoad(evt:Event){
baslik_txt.htmlText = "<b>"+evt.target.data.Baslik+"</b>"
tarih_txt.text = evt.target.data.Tarih
yazi_txt.text = evt.target.data.Yazi
}
Şimdi CTRL+Enter yaparsanız, text dosyasından gelen veriyi sahnede görürsünüz. Evet kodu açıklayalım;
Yukarıda loader isimli URLLoader sınıfı bir değişkenim var. URLRequest sınıfı ile dosya erişim bilgimi tutuyorum. loader ile ex.txt deki veriyi yükleyeceğim.( Burada olayı bir önceki dersteki örneğe göre biraz kısalttım.) Gelen veri (URL Kodlama) için data format olarak VARIABLES kullandık (Xml de TEXT kullanıyoruz). loader değişkenine olay dinleyici ekledim ve textLoad isimli fonksiyonu çalıştırıyorum.
Fonksiyonda ise; sahnedeki dinamik alanlara gelen veriyi dağıtıyorum. Farklı olarak, başlık yazımı kalın yaptım. Bunun için de htmlText özelliğini kullandım.
**Şimdi işi biraz daha zorlaştıralım, yani daha fazla veri çekelim ayrıca resim de yükleyelim.
İlk önce dinamik text alanlarımızı oluşturalım. Bu sefer; ikişer adet başlık, tarih ve ana yazı alanı oluşturalım. Ayrıca iki adet de resim yükleyeceğim. Dolayısıyla resimler için iki adet te boş movieClip oluşturalım (Insert/New Symbol yada CTRL+F8). Bunları da sahneye ekleyelim. Siz yazı alanlarını ve boş klipleri, sahnede istediğiniz şekilde konumlamdırabilirsiniz.
NOT : MovieClip ekleme, boş moviclip, dinamik text, örnek isim, ..vb. konularda eksiğiniz varsa daha önceki derslere bakmanızda fayda var oralarda anlattım. Kaldı ki nette bu konuda bir çok kaynak ta mevcut.
Evet ne yaptık; iki adet başlık (örnek isimleri: baslik_txt0 ve baslik_txt1), iki adet tarih (tarih_txt0 ve tarih_txt1), iki adet ana yazı (yazi_txt0 ve yazi_txt1) dinamik textlerini sahneye ekledik. Ayrıca resimleri yüklemek için de iki adet boş mc (resim_mc0 ve resim_mc1) yarattık ve sahneye ekledik.
Şimdi de text dosyamızı oluşturalım (ex1.txt):
Baslik0=Burası Birinci Başlık&Tarih0=02.02.2010&Yazi0=Burası birinci ana yazı&Resim0=resim1.jpg&Baslik1=Burası İkinci Başlık&Tarih1=03.02.2010&Yazi1=Burası ikinci ana yazı&Resim1=resim2.jpg°er=2
Note Pad’e yukarıdaki içeriğimi ekledim ve ex1.txt ismiyle fla dosyam ile aynı dizine kaydettim.
Son olarak ta actionScript kodumuzu ekleyelim. Yeni bir layer oluşturdum ve F9 ile as panelimi açtım. Aşağıdaki kodu buraya ekliyorum.
loader.dataFormat = URLLoaderDataFormat.VARIABLES
loader.load(new URLRequest("ex1.txt"))
loader.addEventListener(Event.COMPLETE, textLoad)
function textLoad(evt:Event){
for(var i:uint=0; i<evt.target.data.deger; i++){
this["baslik_txt"+i].htmlText = "<b>"+evt.target.data["Baslik"+i]+"</b>"
this["tarih_txt"+i].text = evt.target.data["Tarih"+i]
this["yazi_txt"+i].text = evt.target.data["Yazi"+i]
var imgLoader:Loader = new Loader()
this["resim_mc"+i].addChild(imgLoader)
imgLoader.load(new URLRequest(evt.target.data["Resim"+i]))
}
}
Yukarıdaki kodda diğerinden farklı olarak, textLoad fonksiyonu içerisinde for döngüsü kullanıyorum. Yarattığım “i” (pozitif tamsayı:uint) değişkenini 0′dan başlatıp, txt dosyamda belirlediğim “deger” in tam sayı karşılığı kadar arttırıyorum(2 olarak belirlemiştim). Daha sonra, örnek isimlerimin sonlarında kullandığım rakamlara (0,1) ” i” değerini eşitliyorum. (“i” değeri 2 kez arttığı için 0 ve 1 değerini alıyor)
Resimlerimi yüklemek için de imgLoader isimli Loader sınıfı bir değişken yarattım. Bunu, addChild metoduyla resim_mc örnek isimli movieClip içine ekliyorum sonrasında ise buna resimi load ediyorum (doğal olarak burada da “i” 0,1 değerlerini alıyor).
Şimdilik bu kadar, umarım yararlı olur. Kaynak dosyayı buradan indirebilirsiniz. Teşekkürler…




Şubat 13th, 2010 on 16:36
Dersleriniz çok yararlı bundan dolayı öncelikle çok teşekkür ederim benim bir sorum olacak peki bu dışarıdan çağıralan resimlere bir effect vermek istesek nasıl yaparız resime veya rollover haline şimdiden teşekkürler
Mayıs 4th, 2010 on 12:04
Verdiğiniz emeğe teşekkürler. Anlattıklarınızı uygulamakta sıkıntı çekmiyorum artık. BU resim1-yazı1 i 1. framede resim2-yazı2 yi 2. framede gösteremedim. bu mümkün müdür?
Mayıs 6th, 2010 on 15:08
Mümkündür, ancak neden böyle birşey istediğinizi de belirtirseniz daha kolay yardımcı olabilirim.
Mayıs 8th, 2010 on 13:06
[...] kullandığım kod; ” Actionscript 3.0 kullanarak txt dosyasından veri çekmek..-2-” başlıklı derste text dosyasından veri çekerken kullandığım kodla hemen hemen [...]
Ocak 15th, 2012 on 09:54
Bir sorum olacaktı.mysql içinde blob olarak resimlerim var bunları as 3.0 kullanarak flash içine almak istiyorum. PHP kullanıyorum. Resim bilgileri geliyor fakat resme dönüşmüyor. PHP içinde header kullanarak yaptım . Fakat flash içinde bir türlü olmadı. Sizin As3.0 bilginize güvendiğim için yazıyorum.yardımınızı bekliyorum. selamlar.
AS 3.0 kodlar————
var istek:URLRequest=new URLRequest (“http://localhost/soruCek2.php”);
istek.method=URLRequestMethod.POST;
var gonder:URLVariables=new URLVariables();
gonder.sinif=”6″;
istek.data=gonder;
var yukleyici:URLLoader=new URLLoader (istek);
yukleyici.addEventListener(Event.COMPLETE, yuklendi);
yukleyici.dataFormat=URLLoaderDataFormat.VARIABLES;
yukleyici.load(istek);
function yuklendi (e:Event):void{
sonucTxt1.text=e.target.data.sorumetin;
sonucTxt2.text=e.target.data.aa;
sonucTxt3.text=e.target.data.bb;
sonucTxt4.text=e.target.data.cc;
sonucTxt5.text=e.target.data.dd;
addChild(e.target.data.resim);
}
PHP kodlar—————-
Ocak 15th, 2012 on 10:02
devamı çıkmamış
PHP kodlar—————-
Ocak 25th, 2012 on 14:17
Tam kodunu yollarsan yardımcı olabilirim.. Kolay gelsin..