Flashda Resim Slayt

Alıntıdır:http://www.gnm6.com/tag/slide-show/Flash’ta Kolay Slide Show Hazırlama

aşağıdaki kodu flash’a yapıştırın ve belirtilmiş şekilde bir XML dosyası oluşturun başka hiçbirşeye gerek yok…

flashı olmayanlara swf yeterli XML’i de not defteri ile oluşturabilirsiniz ;)

/*
Flash‘ta resim gosterisi yapmak her zaman canımı sıkmıştır. Flash CS3′te bu ugras ıcın “Slideshow Template” yapmışlar ama o da çok farklı değılö yine sıkıcı bir sürü fare tıklaması.
Bu iş için daha basit daha hızlı bir çözüm yaratmak lazım diye düşündüm. Şu an yeni taşındığım evimde internet olmadığı için tek kaynağım da Flash‘ın yardım dökümanı.
Aklımdakini anlatayim:
-Resimleri teker teker sahneye aktarıp birebir boyutlandırmak istemiyorum.
-Her resim için ayrı ayrı tween ile uğraşmakta istemiyorum.
-Resimlerle ilgili başlık vs. resimle beraber görünsün istiyorum.

Sonuç olarak tüm resimleri tek klasörde saklarım, resim listesini ve bilgileride bir xml dosyasında saklarım diye bir çözüm düşündüm.
Ve o şekilde yaptım, kodlar biraz karışıktı düzenledim ve ne işe yaradığını anlattım.
İyi seyirler.

Sahneye hiçbirşey eklemeniz gerekmiyor. Nesneleri script ile yarattım.
Örnek olsun diye birkaç resim ve aşşağıdaki formatta bır xml dosyası gerekiyor.

<liste>
<bekleme>6</bekleme>
<resim baslik=”Dere”>1.jpg</resim>
<resim baslik=”Gol”>2.jpg</resim>
<resim baslik=”Orman”> 3.jpg</resim>
<resim baslik=”Cicekler”>4.jpg</resim>
</liste>

*/

//Gerekli kütüphaneler
import flash.display.*;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.Event;
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.text.TextField;
import fl.transitions.*;
import fl.transitions.easing.*;

//Dışardan bilgileri alacağımız xml dosyasına bağlanıyoruz.
var disXML:XML;
var XMLYuk:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest(”liste.xml“);
XMLYuk.load(request);
XMLYuk.addEventListener(Event.COMPLETE, Tamamlanan);

//XML nesnesi yüklemesi tamamlandığında aşağıdaki fonksiyon çalışıyor.<_script /><!-- D(["mb","u003cbru003efunction Tamamlanan(event:Event):voidu003cbru003e{u003cbru003e var XMLYuk:URLLoader u003d event.target as URLLoader;u003c/pu003enu003cpu003e //değişkene xml verisini yükledik.u003cbru003e disXML u003d new XML(XMLYuk.data);u003cbru003e u003cbru003e //resimler arası bekleme süresini de xml den okutuyorum.u003cbru003e var beklemeu003ddisXML.bekleme;u003cbru003e u003cbru003e //xml dosyasından kaç resim olduğunu okuyorum.nu003cbru003e var resAdetu003d0;u003cbru003e for each (var resimAdi in disXML.resim)u003cbru003e {u003cbru003e resAdet+u003d1;u003cbru003e }u003cbru003e u003cbru003e //ilk resmi direk gösteriyorum çünkü zaman ölçmeye başladığımda bekleme süresi kadar boş kalıyor.u003cbru003e resimGoster(0, disXML.resimn[0].@baslik);u003cbru003e u003cbru003e //Zaman değişkeni bekleme süresini resim sayısı kadar tekrarlayacak.u003cbru003e var Zaman:Timer u003d new Timer(bekleme*1000, resAdet-1);u003cbru003e Zaman.addEventListeneru003cWBRu003e(TimerEvent.TIMER, Degis);u003cbru003e Zaman.start();nu003cbru003e u003cbru003e //Zaman değişkeni her tetiklendiğinde çalışacak fonksiyonu003cbru003e function Degis(event:TimerEvent):void u003cbru003e {u003cbru003e //resim gösterme fonksiyonunu çağırırken xml veri indeksini zaman nesnesinin tetiklenme sayısı ile çağırtıyorum.nu003cbru003e //resim başlıklarını da kullanımını görmek açısından farklı bir şekilde çağırttım.u003cbru003e resimGoster(event.targetu003cWBRu003e.currentCount, disXML.resim[event.targetu003cWBRu003e.currentCount].@baslik);u003cbru003e }u003c/pu003enu003cpu003e}u003c/pu003enu003cpu003e//her zaman tetığinde gösterilecek resim aşağıdaki fonksiyon ile çağırılıyoru003cbru003efunction resimGoster(no, yazi)u003cbru003e{u003cbru003e //her resim için yeni movieclip nesnesi oluşturuyoruz.u003cbru003e var resim:MovieClip u003d new MovieClip();nu003cbru003e //resmi sahneye ekliyoruzu003cbru003e addChild(resim);u003cbru003e var resYuk:Loader u003d new Loader();u003cbru003e //fonksiyona dışarıdan gelen resim indexi ile xml dosyamızdan resmin yolunu alıyoruzu003cbru003e var resUrl:String u003d disXML.resim[no];nu003cbru003e //resim yolunu url isteğine tanıtıyoruzu003cbru003e var resUrlIst:URLRequest u003d new URLRequest(resUrl);u003cbru003e //ve resimi nesneye yüklüyoruzu003cbru003e resYuk.load(resUrlIst);u003cbru003e //resim yükleyicisi nesnemize yeni olay dinleme nesnesi oluşturuyoruznu003cbru003e resYuk.contentLoaderInfou003cWBRu003e.addEventListener(Eventu003cWBRu003e.COMPLETE, resimYukle);u003cbru003e //ve yukarıda belirttiğimiz resimYukle fonsiyonunun içeriği",1] ); //--><_script />
function Tamamlanan(event:Event):void
{
var XMLYuk:URLLoader = event.target as URLLoader;

//değişkene xml verisini yükledik.
disXML = new XML(XMLYuk.data);

//resimler arası bekleme süresini de xml den okutuyorum.
var bekleme=disXML.bekleme;

//xml dosyasından kaç resim olduğunu okuyorum.
var resAdet=0;
for each (var resimAdi in disXML.resim)
{
resAdet+=1;
}

//ilk resmi direk gösteriyorum çünkü zaman ölçmeye başladığımda bekleme süresi kadar boş kalıyor.
resimGoster(0, disXML.resim [0].@baslik);

//Zaman değişkeni bekleme süresini resim sayısı kadar tekrarlayacak.
var Zaman:Timer = new Timer(bekleme*1000, resAdet-1);
Zaman.addEventListener(TimerEvent.TIMER, Degis);
Zaman.start();

//Zaman değişkeni her tetiklendiğinde çalışacak fonksiyon
function Degis(event:TimerEvent):void
{
//resim gösterme fonksiyonunu çağırırken xml veri indeksini zaman nesnesinin tetiklenme sayısı ile çağırtıyorum.
//resim başlıklarını da kullanımını görmek açısından farklı bir şekilde çağırttım.
resimGoster(event.target.currentCount, disXML.resim[event.target.currentCount].@baslik);
}

}

//her zaman tetığinde gösterilecek resim aşağıdaki fonksiyon ile çağırılıyor
function resimGoster(no, yazi)
{
//her resim için yeni movieclip nesnesi oluşturuyoruz.
var resim:MovieClip = new MovieClip();
//resmi sahneye ekliyoruz
addChild(resim);
var resYuk:Loader = new Loader();
//fonksiyona dışarıdan gelen resim indexi ile xml dosyamızdan resmin yolunu alıyoruz
var resUrl:String = disXML.resim[no];
//resim yolunu url isteğine tanıtıyoruz
var resUrlIst:URLRequest = new URLRequest(resUrl);
//ve resimi nesneye yüklüyoruz
resYuk.load(resUrlIst);
//resim yükleyicisi nesnemize yeni olay dinleme nesnesi oluşturuyoruz
resYuk.contentLoaderInfo.addEventListener(Event.COMPLETE, resimYukle);
//ve yukarıda belirttiğimiz resimYukle fonsiyonunun içeriği<_script /><!-- D(["mb","u003cbru003e function resimYukle(event:Event):voidu003cbru003e {u003cbru003e //sahneye eklediğimiz resim nesnesine resimyükleyici nesnesinin içeriğini atıyoruz.nu003cbru003e //bu adımda resim sahnede görünecektir, fakat öncesinde hemen altındaki özellikleri kazanarak görüntüleneceku003cbru003e resim.addChild(resYuku003cWBRu003e.content); u003cbru003e //aşağıdaki iki satır resmi sahne genişliği ve yüksekliğine eşitliyor.nu003cbru003e //aslında bu yöntem resimlerde bozulmalara yol açacaktır, bunu önlemek için kullanacağınız resimleri bir resim işleme programı ile sahne boyutuna getirebilirsiniz.u003cbru003e resim.widthu003dstage.stageWidthu003cWBRu003e;u003cbru003e resim.heightu003dstage.stageHeigu003cWBRu003ehtn;u003cbru003e //resimlerin sahneye geçişli bir şekilde gelmesini sağlayan satır.(tabi yukarıda eklediğimiz kütüphaneler sayesinde)u003cbru003e TransitionManager.startu003cWBRu003e(resim, {type:Fade, direction:Transition.IN, duration:9, easing:Strong.easeOutn});u003cbru003e }u003cbru003e //resim başlıkları için yeni yazı alanı oluşturuyoruzu003cbru003e var Baslik:TextField u003d new TextField();u003cbru003e Baslik.text u003d yazi;u003cbru003e //yazı alanı özellikleriu003cbru003e Baslik.autoSizeu003du0026quot;centeru0026quot;;u003cbru003e Baslik.backgroundu003dtruen;u003cbru003e Baslik.backgroundColoru003cWBRu003eu003d0xFFFFFF;u003cbru003e //sahnede yaklaşık olarak nesnemizi ortalıyoruzu003cbru003e Baslik.xu003d(stage.stageWidth/2u003cWBRu003e)-50;u003cbru003e Baslik.yu003dstage.stageHeightu003cWBRu003e-30;u003cbru003e //ve gösterime hazır nesnemizi sahneye ekliyoruznu003cbru003e addChild(Baslik);u003cbru003e}u003c/pu003eu003cbr clearu003d"all"u003e",1] ); //--><_script />
function resimYukle(event:Event):void
{
//sahneye eklediğimiz resim nesnesine resimyükleyici nesnesinin içeriğini atıyoruz.
//bu adımda resim sahnede görünecektir, fakat öncesinde hemen altındaki özellikleri kazanarak görüntülenecek
resim.addChild(resYuk.content);
//aşağıdaki iki satır resmi sahne genişliği ve yüksekliğine eşitliyor.
//aslında bu yöntem resimlerde bozulmalara yol açacaktır, bunu önlemek için kullanacağınız resimleri bir resim işleme programı ile sahne boyutuna getirebilirsiniz.
resim.width=stage.stageWidth;
resim.height=stage.stageHeight ;
//resimlerin sahneye geçişli bir şekilde gelmesini sağlayan satır.(tabi yukarıda eklediğimiz kütüphaneler sayesinde)
TransitionManager.start(resim, {type:Fade, direction:Transition.IN, duration:9, easing:Strong.easeOut });
}
//resim başlıkları için yeni yazı alanı oluşturuyoruz
var Baslik:TextField = new TextField();
Baslik.text = yazi;
//yazı alanı özellikleri
Baslik.autoSize=”center”;
Baslik.background=true ;
Baslik.backgroundColor=0xFFFFFF;
//sahnede yaklaşık olarak nesnemizi ortalıyoruz
Baslik.x=(stage.stageWidth/2)-50;
Baslik.y=stage.stageHeight-30;
//ve gösterime hazır nesnemizi sahneye ekliyoruz
addChild(Baslik);
}

Yorum Yaz
Arkadaşların Burada !
Arkadaşların Burada !