Bu uygulamamızda amatörce kar yağdırmaya çalışacağız. Elbette burada anlatılanları referans alarak daha etkin grafiklerle daha güzel bir çalışma elde edebilirsiniz. Yine bu uygulamamızda detaylarını ayrıca anlatacağımız Sound() nesnesinden yararlanacağız. Animasyonumuz oynadıkça tekrar eden bir fon müziğimiz olacak ancak bu müzik dosyası animasyonumuza import/ithal edilmiş bir dosya olmayıp harici bir mp3 dosyası olacak. Animasyonumuzda müziği başlatmak, kar yağdırmak ve nesnelerin konumlarını kontrol etmek üzere asıl konumuz olan kullanıcı tanımlı fonksiyonlar yazacağız. Benim gibi 1980' ler de çocuklukları geçen sadece tek kanalın bulunduğu ülkemde, zorunlu olarak çıkan programların siyah beyaz ekranlarda seyrediğildiği yıllarda pazar sineması kuşağında Frank Sinatra, Jery Lewis, Dean Martin vb. gibi aktörleri izleyenler için animasyonumuzun müziği çok tatlı gelecektir. Eminim benim gibi sizi de çocukluk yıllarınıza götürecektir. Ama şunuda hatırlatmak isterim telif hakları olan bir parçadır ancak eğitim amaçlı kullandığımız için bizlere anlayış göstereceklerini düşünüyorum (inşaallah). Haydi şimdi animasyonumuzu tasarlamaya ve kodlamaya başlayalım.
1.Öncelikle her zaman olduğu gibi yeni bir flash animasyon dosyası oluşturup, sahne boyutu, fps(frame per second/ saniye başına çerçeve) değeri ve yayınlama ayarları gibi yaptıktan sonra kaydediyoruz.
2.İlk olarak kar tanelerini tasarlamamız gerekiyor. Kar taneleri diyorum çünkü animasyonumuzda şimdilik 5, 6 farklı kar tanesi olacak ancak ilerleyen zamanlarda sizler burada yeni kar taneleri tasarlayabilir ve yazacağımız kodlarda ince ayarlar yaparak farklı tanelerin animasyonunuzda yer almasını sağlayabilirsiniz. Bunun için önce Insert-New Symbol-Movie Clip yöntemi ile yeni bir movie clip nesnesi ekliyoruz.Bu yeni clip nesnesine istediğiniz ismi verebilirsiniz ben mc_kartanesi adını verdim takdir sizin.Bu movie clip nesnesinde aşağıdaki şekilde verildiği üzere 6 farklı ana karede altı farklı kar tanesi tasarlıyor ve ilk ana kareye action olarak stop(); yazıyoruz. Yani animasyon varsayılan olarak oynatılmayacak bu çok önemli arkadaşlar.
kar tanesi tasarim ekrani
3.Şimdi bu kartanesinin basit düşen bir animasyonunu yapacağız yine Insert-New Symbol-Movie Clip yöntemi ile yeni bir movie clip nesnesi ekliyoruz. Bu yeni clip nesnesine ne isim vermek isterseniz verebilirsiniz ben mc_dusenKartanesi adını verdim. Daha sonra 2. maddede tasarladığımız mc_kartanesini ilk ana karede sahnenin ortasına bırakıyor ve kendisine kar_mc  instance name veriyoruz. Sonrasında aşağıdaki ekran çıktısında verildiği gibi motion tween kullanarak bu kartanesinin yukarıdan aşağıya bir sağa bir sola giderek düşmesini sağlıyoruz. Düşerken isterseniz dönme etkisi de verebilirsiniz. Motion Tween nedir?diyenler artık bir zahmet öğrensinler bizim konumuz bu değil. Son olarak kar tanesinin rastlantısal olarak 6 farklı tasarımdan seçilmesi için animasyonumuzun 1. ana karesine kar_mc.gotoAndStop(Math.floor(Math.random()*5)+1); yazıyoruz. Burada Math sınıfına ait iki fonksiyon kullanılmıştır, sayıları tabana yuvarlatan floor()ve rasgele sayı üretilmesini sağlayan random(). Düşen kartanelerinin zaman zaman ekrana yapışıp kalması için movie clip' in en sonundaki ana kareye action olarak gotoAndStop(1); yazıyoruz. İşlem tamam artık sağa sola çarparak düşen ve zaman zaman ekrana yapışacak olan rastlantısal bir kartaneniz var.
Dusen_Kartanesi_ekran_tasarimi
4.Bundan sonra bir adet kar manzarası bularak File-Import-Import to stage yoluyla animasyonumuzun ilk ana karesine bir resim eklemek geliyor. Resmi ekledikten sonra sahne boyutunu ve resmin sahneye göre konumunu ayarlıyoruz. Animasyonumuz üç kareden oluşacak bu nedenle zemin görüntüsünün 3 kare boyunca ekranda kalması için zemin anakaresini timeline üzerinde F5 tuşu yardımıyla kareler ekleyerek 3 kareye genişletiyoruz (1 keyframe ve 2 frame) Ekran tasarımı bitti. Eeeeee! hani kartanelerini sahneye aktarmayacak mıyız? dediğinizi duyar gibi oldum. Evet aktaracağız ama kodla. Lütfen okumaya devam edin.
5. Şimdi kütüphanemizde yer alan mc_dusenKartanesi isimli movie clip nesnesine kodla ulaşabilmek için kendi nesne kütüphanemizde (Ctrl+L ile gelir) bu nesnenin üzerinde farenin sağ tuşuna basıp aşağıdaki şekilde verildiği üzere Linkage komutu verip Export for Action script seçeneğini işaretledikten sonra Identifier/Tanımlayıcı kutusuna karTanesi yazıyor ve OK tuşuna basıyoruz. Lütfen büyük küçük harfe dikkat edin çünkü bu nesneye artık bu isimle ulaşacağız.
nesne_baglanti_ekrani
6.Kodlamaya geçebilmek için animasyonumuza yeni bir katman ve bu katmana üç adet ana kare ekliyoruz. Eğer yukarıda anlatılanları sırası ile yapmışsanız aşağıdakine benzer bir ekran çıktınız olacaktır. Sonrasında aşağıda verilen kodları ilgili ana karelere yazıp yayınlıyoruz.
kar_yagdirma_ekran_tasarimi
7.Animasyonumuza hayat vermek için büyük küçük harf uyumuna dikkat ederek aşağıda verilen kodları yine aşağıda belirtilen ana karelere yazınız. Kolay gelsin.
Animasyon kaynak kodları:
//http://bilalsert.net Kutahya Tek. ve End. Mes. Lis. Web. Prog. Dal. Sefi
// 1. ANA KAREYE YAZILACAK KODLAR
var tanem:Object= new Object();
var sayac:Number=0;
var oran:Number;
var miktar:Number;
var sesKontrol:Sound=new Sound();
var durum:Boolean=true;
fscommand("fullscreen",true);
muzigiBaslat();
sesKontrol.onSoundComplete=function()
{//harici dosyanın oynatılması islemi tamamlandiginda tetiklenen bir fonksiyondur.
durum=true;
}
function muzigiBaslat():Void{
if(durum) {
muzikCal();
durum=false;
//trace("Muzik baslatiliyor...");
}
}//end of muzigiBaslat

function muzikCal():Void{
sesKontrol.setVolume(100);
sesKontrol.loadSound("upload/sourceFiles/Let_It_Snow.mp3",true);
//indirilirken oynatımın devam etmesi icin true yapilir.
}//muzikCal

function rasgeleSayiUret(min,max):Number{//kar taneleri icin rasgele _x, _y degerleri uretiliyor.
return(Math.round(Math.random()*(max-min) + min));
}//rasgeleSayiUret

function karYagdir():Void{
attachMovie("karTanesi","karTanesi" + String(sayac),this.getNextHighestDepth());
tanem=eval("karTanesi" + String(sayac));
with(tanem){
_x=rasgeleSayiUret(10,1014);
_y=rasgeleSayiUret(10,758);
oran=_width/_height;/
/ekrana derinlik vermek icin nesne buyuklukleri en boy oranına gore rastlantisal olarak olcekleniyor.
miktar=rasgeleSayiUret(5,40);
_height+=miktar;
_width+=(Math.round(miktar*oran));

}

if(sayac>100){
removeMovieClip("karTanesi" + String(sayac-100));
}
}//end of function


//2. ANA KAREYE YAZILACAK KODLAR
sayac++;
karYagdir();
muzigiBaslat();

//3. ANA KAREYE YAZILACAK KODLAR
gotoAndPlay(2);
/*
//Animasyon 500 kartanesinden sonra dursun isterseniz aşağıda verilen kodları kullanın
if(sayac<500){
gotoAndPlay(2);
}else{
gotoAndStop(1);
}
*/

Eğer herşeyi tam olarak uygulamışsanız aşağıdaki gibi bir animasyonunuz olacaktır.


Tam ekran oynat

Yardımcı olması dileğiyle.