ActionScript'le Kar Yağışı Efekti Yapalım
Engin Gündoğdu Tarih: 28/07/2008 Yorum: 1 adet
Okunma : 2010 Tutanlar: Bu yazıyı 1 kişi tuttu.
Bu çalışmayı, oluşturduğumuz bir movie clib'in sahnemizde rast gele çoğaltılması prensibinden yola çıkarak yapacağız. Makalemi yeni başlayanlar seviyesinde anlatmaya çalışacağım. Yaptığım örnek çalışmayı da yazımın sonuna ekleyeceğim, böylece anlaşılmayan yerleri örnekten bakarak anlayabilirsiniz.
Başlayalım;
Programınızı açın file>New (Ctrl+N) menüsünden yeni bir sayfa açın.(CS3 kullananlar programı açıktan sonra as 2.0 kod yapısını işaretlesinler) Properties bölümünden (Ctrl +J) sayfa boyutunu 550 x 400 pixsels, frame rate 20, backround'u siyah renk yapın.Insert >New Symbol (Ctlr +F8) tıklayarak yeni bir movie clip oluşturun ve ismini kar_mc yapın.
Bu movie clibin içine Rectangle Tool aracıyla (O) genişliği (width) 8 pixsel, yüksekliği(height) 8 pixsel, dış kenar çizgileri olmayan bir daire çizin. Bu daireyi ctrl+F8 tuş kombinasyonuna basarak movie clip symbole çevirin, isim kısmına kar1 yazın.
Oluşturduğumuz bu movie clibe filters bölümünden(window>properties>filters)blur efektini uygulayın, X ve Y değerlerini 5 yapın. En son oluşturduğumuz movie clibimizin bulunduğu layerin üstüne add motion guide ekleyin.(ilgili layer'ın üstüne sağ tıklayarak da ekleyebilirsiniz) Oluşturduğunuz layer'a pencil Tool (Y) ile beyaz rengi seçerek kıvrık bir yol çiziniz, bu yolun yükseklik değeri 400 den az olmasın ki yukardan yağan kar taneleri sayfa boyunca gözüksün.
Kar1 isimli movie clibimizi ağırlık merkezi çizgimizin başına gelecek şekilde yerleştirelim. Tekrar layer bölümüne gelip movie clibimizin ve kıvrık çizgimizin bulunduğu layerlarımızda 150 frame boşluk bırakıp sağ tıklayıp Insert KeyFrame (F6) diyelim.1 - 150 frame arası bir yere sağ tıklayarak Create MotionTween seçin.150. framedeki Kar1 isimli clibimizi seçerek yine properties bölümünden alpha değerini 25 yapın ve kıvrık çizgimizin sonuna clibimizin ağırlık merkezi çizginin üstüne gelecek şekilde yerleştirin. (Burada clibimizin çizgiyi takip etmesi önemli " Enter " tuşuna basıp kontrollerinizi yapın.)
Edit menüsünden Edit Document(Ctrl +E) tıklayarak boş olan sahnemize geri dönelim. Oluşturduğumuz movie clip sahnemizde ise silelim. Window menüsünden library (Ctrl +L) tıklayarak kütüphanemizi açalım. Kütüphanemizde karmc isimli movie clibimizin üstüne sağ tıklayarak linkage seçeneğini seçelim. Karşımıza çıkan menüden indentifier kısmına karmc yazalım. Şimdi sahnemizdeki ilk boş frame'e aşağıdaki kodlarımızı window>actions (F9) bölümünü açarak yazalım.
var i:Number=0;
var limit:Number=150;
var sure:Number=400 //Mili saniye
kar_cogalma=function(){
i++
kar=attachMovie("kar_mc","kar_mc"+i,i)
kar._x=Math.random()*Stage.width
kar._y=0
if(i>limit){
clearInterval(zaman)
}
}
zaman=setInterval(kar_cogalma,sure)
Şimdi kod satırlarımızda neler yaptığımızı anlatalım;
İ değişkenine 0 sayısını atıyoruz. Limit değişkenine 150 değerini atıyoruz, atadığımız bu sayı sahnemizde ne kadar kar tanesi olacağını belirtir. Sure değişkenine 400 değerini yazıyoruz. Sure değişkenimiz tanımlayacağımız fonksiyonun kaç mili saniyede bir çalıştırmak istediğimizi belirtir. Kar_cogalma isimli bir fonksiyon tanımlıyoruz.
Fonksiyonumuz içindeki ilk satırımızda i değişkenini (i++) bir artırıyoruz. Böylelikle fonksiyon her çalıştığında i değişkenimizin değeri bir artacaktır. Fonksiyonumuz içinde kar değişkeni tanımlıyoruz. Bu değişkenimize attachMovie komutu ile kütüphanemizdeki kar_mc yi sahnemize alıyoruz. Bu işlemi biraz açalım, attachMovie komutunun 3 parametresi vardır bu parametrelere sırasıyla
Movie clibimizin linkage ismini Sahnede oluşacak movieclibin instance name'ni(bunu siz belirliyorsunuz)Movie clibimizin sahnedeki derinlik seviyesini yazıyoruz.
Yapmış olduğumuz kar_mc isimli movie clibi, kar değişkenine atayıp sahneye aldıktan sonra, bir alt satırımızda kar değişkeninin x ve y konumunu belirtiyoruz. Math.random() sınıfını kullanarak, çoğaltılan movie clipleri sahnemizin genişliği değerinde x koordinatına rast gele yerleşecektiriyoruz. Çok sık kullanılan bir durum olduğu için, buradaki matematik işleminden de bahsetmek istiyorum.
Math sınıfının random metodu "0" sayısı ile "1" sayısı arasında sayı üretir. Biz bu değerlerle herhangi bir sayıyı çarparsak ürettiğimiz sayılar bu çarptığımız sayının değerini aşamayacaktır.( Böylelikle üst limit belirlemiş oluyoruz.) Kar tanelerinin sahnemizin üstünden yağması için "y" değerine "0" sayısını yazmamız yeterli olacaktır.
Bir alt satıra geçerek if deyimi ile şart koşuyoruz. İ değişkenimiz limit değişkenimizden büyük olunca, koşulumuzun altındaki satırlarımız çalışacak ve setInterval() fonksiyonu ile tanımladığımız zaman değişkenini clearInterval() fonksiyonu ile kaldırılacaktır. Fonksiyonlarımızı süslü parantezlerle kapatıyoruz.
En alt satırımızda bahsettiğimiz zaman değişkenine setInterval fonksiyonunu atıyoruz. SetInterval fonksiyonuyla da kar_cogalma fonksiyonunu, sure değişkenine atadığımız değer aralıklarında çalışmasını sağlıyoruz. Böylelikle fonksiyon her çalıştığında i değişkeninin değeri 1 artacaktır. Movie clibimiz sahnemizde x koordinatına i değişkeni 150 den büyük olana kadar rast gele yerleştirilecektir.
Ctrl+ Enter tuşlarına basarak çalışmamızı test edelim. Kar tanelerinin belirli aralıklarda çoğaldığını göreceksiniz. Çalışmanıza görsellik katmak istiyorsanız, arka plana karlı bir resim yerleştirebilir, kar_mc nin içine birkaç tane daha kar tanesi ekleyebilir, boyutlarını ve alpha değerlerini farklı yapabilirsiniz. Bu uygulamayı kullanarak farklı efekt uygulamaları da yapabilirsiniz.
Diğer yazılarım da görüşmek dileğiyle...
Makale
İlişkili makale bulunamadı.
Haber
İlişkili haber bulunamadı.
Etkinlikler
Toplantı
Özgür Yazılım ve Linux Günleri '10
Özgür Yazılım ve Linux Günleri '10
İstanbul Bilgi Üniversitesi Bilgisayar Bilimleri Bölümü ve Linux Kullanıcıları Derneği'nin 9 yıldır düzenlemekte oldukları etkinlikler bu yıl `Özgür Y...
Kategori:
Toplantı
MMIstanbul Blog'undan
Blog Bölümü Blogevi.com'a Taşınıyor
Selam arkadaşlar MMIstanbul'da , tasarımcı ve programcıların blog yazılarını "feedleyerek" MMIstanbul okurlarını MMIstanbul dışın ...
7.500'üncü üyemiz Cem Koç!
Neler Yapılabilir?
500 Hatası Hakkında!
Reklam, MMIstanbul ve Yeni Projeler (Durumumuz Bu Tarzında)










hepsi aynı Y koordinatından geldiği ve genel olarak küt hareketler yaptığından gerçekçiliğini yitiriyor. yağışı dinamik olarak yaptırmanızı tavsiye ederim. sin eğrisi şeklinde olabilir. yine de elinize sağlık