Flash’ta Kolay Slide Show Hazırlama
Pazar, 06 Nisan 2008aş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
//XML nesnesi yüklemesi tamamlandığında aşağıdaki fonksiyon çalışıyor.
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
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
}
}
//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
//ve yukarıda belirttiğimiz resimYukle fonsiyonunun içeriği
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
//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.stageHeig
//resimlerin sahneye geçişli bir şekilde gelmesini sağlayan satır.(tabi yukarıda eklediğimiz kütüphaneler sayesinde)
TransitionManager.start
}
//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
//sahnede yaklaşık olarak nesnemizi ortalıyoruz
Baslik.x=(stage.stageWidth/2
Baslik.y=stage.stageHeight
//ve gösterime hazır nesnemizi sahneye ekliyoruz
addChild(Baslik);
}