Kar yağışı efekti hazırlamada birden daha fazla
yöntemi vardır. Ortak komut duplicateMovieClip
komutudur. Hazırladığımız swf dosyası bu efekti oluşturabilecek
en basit komutlarla hazırlanmıştır. En doğru yöntem bu değilse
de gerek işlevselliği gerekse basitliği tercih sebebi olabilir.
1-Önce sahneye arkaplanda kullanacağımız
resmi import edelim. İnsert-->New Symbol komutu verelim ve
davranış olarak grafik seçimini yapalım. Sahneye oval aracı ile
3*3 piksellik beyaz renkli bir daire çizelim. bu kar tanesini
temsil etmektedir. isterseniz gradient bir renkte kullanabilirsiniz.
2- Tekrar New Symbol komutunu
verelim ve davranış olarak movie clip seçeneğini kullanalım. Klibin
sahnedeki katmanın sol köşesine çift tıklama yaparak katman özellikleri
panelini açalım ve katman özelliği olarak Guide
seçeneğini işaretleyelim. Bu klavuz katmana çizgi aracı ile aşağıdakine
benzer bir çizim yapalım:
Alta bir katman daha ekleyip kütüphaneden az
evvel oluşturduğumuz kar grafiğini bu çizginin başlangıcına yerleştirelim.
Bu katman otomatik olarak klavuzlanmış katman olacaktır.Şayet
otomatik değişim olmazsa yukardaki işlemi tekrar layarak katman
özelliği olarak Guided seçeneğini işaretleyelim.Burada
kar hareketini yapacak bir motion tween oluşturalım. Bunu yapmazsak
kar hareketi düşecek tarzda ve düz bir doğrultuda olacaktır. Rüzgardan
uçuşan bir kar tanesi görüntüsü için bu animasyonu oluşturduk.
3- New Symbol komutu ile son
bir klip oluşturalım. İlk katmanda 3 tane boş keyframe oluşturalım.
Bu katmanın altına yeni bir katman ekleyelim ve kütüphaneden son
oluşturduğumuz(2 nolu maddede anlatılan)kar klibini sahneye çekelim
ve örnek adı olarak kar0 yazalım. Bu sıfır eklentisi
önemlidir. Bu rakamı daha sonra actionscriptte kullanacağız.
4- Şimdi 1.katmandaki 1.kareyi
seçelim ve şu komutu atayalım:
max_kar = 100;
i = 1;
Max_kar=100 duplicate komutu ile çoğaltılacak
klibin sayısını vermektedir. Yani klip en fazla 100 kere çoğaltılacaktır.
i=1 ikinci karede kullanılacak i değişkeninin başladığı ilk değer
olacaktır.
İlk dizinde kar0 klibi çoğaltılmaktadır. Burada
kar0 değilde "kar"+(i-1) olarak yazılma nedeni şudur.i
değişkenine 1.karede 1 değeri atanmıştı.bu durumda i-1= 1-1 bu
da 0 değerini vermektedir. Dolayısı ile ilk dizinde çoğaltılacak
klip kar0 (yani örnek adı kar0 olan klibimiz) olacaktır. Alttaki
i++ değerine dikkat edin İ++ değeri 1+1=2 değerini verecektir.
Film 3.kareye gittiğinde geri döndüren bir komut nedeni ile tekrar
2.kareye dönecektir. Fakat i değeri artık 2 olmuştur. Bu durumda
ilk dizinde "kar"+(i-1)= kar1 klibi olacaktır. Böylece
oynatma kafası her 2.kareye döndüğünde klip 2, 3, 4, 5.... şeklinde
artarak 100 klibe kadar çoğaltılacaktır. Aynı mantık diğer komutlarda
da vardır.
Çoğaltılan kar0 klibinin örneğine ilk dizinde
kar+i yani kar1 adı verilmişti. 2.dizindeki setProperty komutu
ile çoğaltılmış olan kar1 klibinin x düzlemi, getProperty komutu
ile alınan kar+(i-1)= kar0 klibinin x ekseninden 2 piksel eksiği
olarak ayarlamıştır.
Aynı işlem 3. dizinde y eksenine i/5 değeri eklenerek
yapılmıştır.
4 ve 5. dizinde de aynı mantıkla kar aşağı doğru
hareket ettikçe bir miktar büyümesini sağlayacaktır.
Son dizinde i değeri bir sayı artırılmaktadır.
6- Üçüncü ve son kareye atanan
komutlar:
if (i<=max_kar) {
gotoAndPlay(2);
} else {
stop();
}
i değeri 100 olana kadar oynatma kafası 2. kareye
gönderilerek buradaki komutlar tekrar işleme girmektedir. Else
ifadesi ile i değeri 100 olunca film klibinin çoğalması duracak
ve oynatma kafası 3.karede sabitlenecektir.
Kod işlemimi bu kadar.
Yalnız kod mantığını anlamanız için kısa bir
tekrar yapalım:
1.karede maksimum i değeri 100 olarak belirleniyor
ve i değişkenine 1 değeri veriliyor. Yukarda ikinci karede i yerine
1 yazdığınızda şu sonuçlar çıkacaktır. Önce 1 değerini yerleştirin
ve alttaki cümleleri okuyun.
duplicateMovieClip(kar0, kar1, i); =kar0 filmimiz
bir tane kopyalanıp adı kar1 oluyor ve 1.level`a yerleştiriliyor.
setProperty(kar1, _x, getProperty (kar0, _x)-2);=Yeni
oluşturulan kar1 klibinin x düzlemi kar0 klibinin x düzleminden
2 piksel az olarak oluşturuluyor. Aynı yöntemlerle oluşturulan
klip1 kopyasının y düzlemi , en ve boyu değiştiriliyor.
Son dizinde de İ++ ile i değeri 2 olarak atanıyor,
başka komut olmadığından oynatma kafası 3. kareye atlıyor.
3. karede i değeri 100 ise animasyon duruyor
, daha az değerde ise ( ki şu anda 2 değerinde) tekrar 2. kareye
gidiyor. Burada aynı işlemler tekrarlanıyor. Tek fark artık klip1
örneğinin klip2 örneği oluşturuluyor ve böylece 100 klip kopyası
oluşturulana kadar devam ediyor.
7- Ana sahneye dönelim. Burada
sadece bir resim var. Üste bir katman ekleyelim ve kütüphaneden
az evvel kodlarını eklediğimiz film klibini sahneye çekelim. Oluşturduğumuz
kodlarla 1. film klibi 100 adet kopya oluşturacaktır. Bu rakam
bizim için az olduğundan resimin üst sol, orta ve sağ kısmına
ve yine resmin tam orta kısmına 20 şer adet olacak şekilde aynı
klibi kütüphaneden sahneye alalım. Değişik yerlere yerleştirilen
bu klibin mesela 100 adet örneğini sahneye alalım. Bu durumda
100x100=10.000 tane kar tanesi sahnede dans edecektir. Bu sayı
sizin zevkinize bağlıdır. Çok aşırı yerleştirildiğinde görüntüdeki
kar yağma oranı artacaktır.
Örneğin eleştirisi: Baştada
belittiğim gibi uygun kodlar bunlar olmayabilir. Math.random ve
döngü komutları ile klip daha uygun oluşturulabilir. Fakat çok
tecrübeli olmayan kullanıcılar için buradaki kod mantığı daha
anlaşılır olduğundan bu yöntem tercih edilmiştir.