Banner da XML Kullanımı

Daha önce 5 resimli banner yapımı ile aynı. Sadece XML’den bannera metin çekiyoruz. Açıklama mayetinde kullanılabilir. fla dosyasında değişiklik yaparak metinlere istediğiniz boyutu, rengi, efekti verebilirsiniz. Bu dersten sonra aynı projede resimlerin konumlarını da xml kullanarak alacağız. İyi çalışmalar.

Örnek dosya : Banner + XML

Proje Dosyası : Banner + XML proje dosyası

 

Açıklamalı Kodlar :
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.utils.Timer;
import flash.events.TimerEvent;

//Sayfa sayılarını verelim

sayi1.sayfa_sayisi.text = “1”;
sayi2.sayfa_sayisi.text = “2”;
sayi3.sayfa_sayisi.text = “3”;
sayi4.sayfa_sayisi.text = “4”;
sayi5.sayfa_sayisi.text = “5”;

//sayfa numaralarımıza “olay” ekleyelim over,out,click
sayi1.addEventListener(MouseEvent.MOUSE_OVER, ustunde);
sayi1.addEventListener(MouseEvent.MOUSE_OUT, disarida);
sayi1.addEventListener(MouseEvent.CLICK, tiklandi);
sayi1.buttonMode=true;

sayi2.addEventListener(MouseEvent.MOUSE_OVER, ustunde);
sayi2.addEventListener(MouseEvent.MOUSE_OUT, disarida);
sayi2.addEventListener(MouseEvent.CLICK, tiklandi);
sayi2.buttonMode=true;

sayi3.addEventListener(MouseEvent.MOUSE_OVER, ustunde);
sayi3.addEventListener(MouseEvent.MOUSE_OUT, disarida);
sayi3.addEventListener(MouseEvent.CLICK, tiklandi);
sayi3.buttonMode=true;

sayi4.addEventListener(MouseEvent.MOUSE_OVER, ustunde);
sayi4.addEventListener(MouseEvent.MOUSE_OUT, disarida);
sayi4.addEventListener(MouseEvent.CLICK, tiklandi);
sayi4.buttonMode=true;

sayi5.addEventListener(MouseEvent.MOUSE_OVER, ustunde);
sayi5.addEventListener(MouseEvent.MOUSE_OUT, disarida);
sayi5.addEventListener(MouseEvent.CLICK, tiklandi);
sayi5.buttonMode=true;

//Mouseover hali için hazırladığımız “sayfa_buton” movie clip’inde renk değişimini başlatıyoruz.
//2.frameden başlatmamızın sebebi ise 1.frame de “stop();” olduğu için duraksama yapmasını engellemek.
function ustunde(event:MouseEvent):void
{
    event.currentTarget.gotoAndPlay(2);
}

//Mouseout hali için hazırladığımı “sayfa_buton” movie clip’inde renk değişimini başlatıyoruz.
//6.framden başlatmamızın sebebi ise 5.framede “stop();” olduğu için duraksama yapmasını engellemek.
function disarida(event:MouseEvent):void
{
    event.currentTarget.gotoAndPlay(6);
}

/*
tutucu adında bir dizi(array) tanımlıyoruz. Bu bize tıklanılan nesnenin numarasını tutacak.
koordinat adında bir değişken (int) tanımlıyoruz. Bu ise tıklanılan (sayfa numarası * 400) -400 formülümüzü tutacak.
k adında değişken tanımlıyoruz. bu ise her tıklamada dizimizi arttıracak.
timer adında bir zamanlayıcı tanımlıyoruz. bu ise belirttiğimiz sürede “resimler” movie clipimizin x ekseni üzerinde koordinat değiştirmesini sağlayacak.
ve timer nesnemiz için event(olay)tanımlıyoruz. timer her çalıştığında “hareket” fonksiyonunu çalıştıracak.
*/

var tutucu:Array = new Array();
var koordinat:int;
var k:int;
var resim:URLRequest;
var timer:Timer = new Timer(2);
timer.addEventListener(TimerEvent.TIMER, hareket);

/*
dizi sayısını değiştirecek olan k değişkenimizi arttırıyoruz. “k++”
“timer.start();” ile zamanlayıcımızı çalıştıyoruz.(new timer(2) 2 sayısını arttırarak kayma hızını değiştirebilirsiniz)
tutucu[k]… ile başlayan satırda butona tıklandığında butonun içindekki sayı değerini “int” olarak tutucu[k] dizisine atıyoruz
koordinat… ile sayfa sayısı ile genişliğimizi çarpıp 400 çıkarıyoruz çünkü ilk banner resmimizin x koordinatı
0 olarak başlıyor. *Parantezlere dikkat etmeliyiz.
*/

function tiklandi(event:MouseEvent):void
{
    k++;
    timer.start();
    tutucu[k]= int(event.currentTarget.sayfa_sayisi.text);
    koordinat = (tutucu[k] * 400) – 400;

}

/*
UILoader componenti olan resim adındaki nesnemize resimlerimizi yüklüyoruz.
az kod çok iş diye düşünerek 5 resim için for döngüsüyle işimizi hallediyoruz.
resimlerin adını 1.2… gibi sıralı verdim pratiğe dökmek için. i değiştikçe yüklenilen resim
ve resmin yüklendiği nesne de değişiyor.
MoviClip… satırıyla resimler movieclipindeki resim1, resim2… nesnesine resim adresindeki bilgi yükleniyor.(load)
*/

for(var i:int=1;i<=5; i++)
{
    resim=new URLRequest(“img/” + i + “.jpg”);
    MovieClip(this)[“resimler”][“resim”+i].load(resim);
}

/*
Artık işin janjanlı bölümüne geldik 🙂
Timer nesnemiz (zamanlayıcımız) her çalıştığında resimler movieclipimizin koordinatını kontrol edicek
eğer koordinat ile resimler.x tutuyor veya negatif olarakda tutuyor ise hareket etmesin diyoruz yani timer.stop();
aksi halde (else) tutucu[k-1] değeri boş değilse (çünkü) ilk tıklamada [k-1] değeri boş olur. Bir dizinin elemanları a.b.c.d olsun. a elamnından önce eleman olmadığı için hata vermesini engelliyoruz.
tutucu[k] < tutucu[k-1] ile 1.2.3.4.5 sayıları arasında işlem yapıyoruz. her bannerımız bir sayfa sayısına tekabül ediyordu.
bu yüzden ilk tıklama 3 olsun 2.tıklama 2 olsun. 2<3 olduğunda + bir işlem yapıcak yani sağa kaydıracak
> işlemi içinde negatif yani sola kaydırma yapacak.
else ile de eğer k-1 nesnesi boş ise kaydırma yap(ilk kaydırma olacağı için üstteki işlemlere tabi tutulmayacak.
resimler.x -=10 ile 10 piksel koordinat değiştirmesini sağlıyoruz.
*/
function hareket(event:TimerEvent):void
{
    if(resimler.x == koordinat || resimler.x == koordinat * -1)
    {
        timer.stop();
    }
    else
    {
        if(tutucu[k-1] != null)
        {
            if(tutucu[k] < tutucu[k-1])
            {
                resimler.x +=10;
            }
            else if(tutucu[k] > tutucu[k-1])
            {
                resimler.x -=10;
            }
        }
        else { resimler.x-=10; }
    }

}

//XML dosyamızı yüklemek için gerekli nesneleri oluşturalım.
//myLoader a event ekleyerek yükleme işlemi tamamlandığında xmlLoaded fonksiyonunu çağırmasını sağlıyoruz.
//xmlLoaded fonksiyonu ile xml dosyamız yüklendiğinde bu fonksiyonun içindeki kodlar çalışacak.

var myXML:XML = new XML();
var XML_URL:String = “bannermetinleri.xml”;
var myXMLURL:URLRequest = new URLRequest(XML_URL);
var myLoader:URLLoader = new URLLoader(myXMLURL);
myLoader.addEventListener(“complete”, xmlLoaded);

//kod sisteminde for kullanmamızın amacı 10 satır yazmak yerine 2 satırda tüm metinleri çağırmak.
//resimlerde kullandığımız mantık ile aynı.
function xmlLoaded(event:Event):void
{
myXML = XML(myLoader.data);
    for(var m:Number=0; m<5; m++)
    {
        MovieClip(this)[“resimler”][“baslik”+m].text = myXML.children()[m].baslik;
        MovieClip(this)[“resimler”][“metin”+m].text = myXML.children()[m].metin;
    }
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir