Türkçescript

Actionscript 3.0 kullanarak txt dosyasından veri çekmek..-2-

02 Şubat 2010,

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.

var loader:URLLoader = new URLLoader()
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&deger=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.

var loader:URLLoader = new URLLoader()
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…

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5,00 out of 5)
Loading ... Loading ...
:, , , ,
7 yorum var:
  1. gökhan

    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

  2. Murat

    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?

  3. admin

    Mümkündür, ancak neden böyle birşey istediğinizi de belirtirseniz daha kolay yardımcı olabilirim.

  4. ActionScript 3.0 ve XML -2- - Türkçescript

    [...] 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 [...]

  5. fenci42

    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—————-

  6. fenci42

    devamı çıkmamış
    PHP kodlar—————-

  7. admin

    Tam kodunu yollarsan yardımcı olabilirim.. Kolay gelsin..

Yanıtla

İsim

Mail

Websitesi    

*

Bağlantılar!

Kendi projelerimiz ve arkadaşlarımızın projeleri...