1 Mart 2012 Perşembe

Flash AS3-Motion Blur Efekti

Bir cismin yaptığı hareket ile yapay olarak blur(bulanıklık) etkisi alması, animasyonlarda sık kullanılan bir -gerçekçi hızlı obje görüntüsü- elde etme yöntemidir. Bu efekti oluşturmada temel mantık cismin blur değerinin hareket ivmesiyle orantılandırılmasıdır. Böylelikle cisim belirli bir zamanda ne kadar hızlanırsa yani ivmesi ne ise blur değeri de onu referans alarak oranlanır. Önce anlatmaya çalıştığımız şeyle ilgili örnekleri görelim;

http://www.flashdersleri.net/wp-content/uploads/2010/01/blur1.swf
http://www.flashdersleri.net/wp-content/uploads/2010/01/blur2.swf




Örneklerde de görüldüğü gibi cisimler ne kadar hızlanırlarsa o kadar motion blur etkisi alıyor ve daha gerçekçi animasyonlar oluşuyor ( Bu iki örnekte amacı daha iyi belirtmek için blur değerleri biraz abartılı verilmiş olabilir. Siz bunu ivme değerini küçülterek değiştirebilirsiniz.)
İlk örneği yapabilmek için sahneye “a_mc” isminde bir araç klibi koyuyoruz. Kullandığımız kodlar ise aynı satırdaki açıklamalarıyla birlikte şunlardır:



var blur = new BlurFilter();/*yeni bir blur filtresi oluşturduk*/
var drc:Number/*ivme değeri*/
var hdf:uint=470/*aracın ulaşacağı hedef x konumu*/
var ilk:Number=a_mc.x/*işlemi tekrarlamak için ilk konum değeri*/
 
stage.addEventListener(MouseEvent.MOUSE_UP,git)/*sahneye tıklama fonksiyonu çağırıldı*/
function git(e:MouseEvent){
a_mc.x=ilk/*ilk durumda a_mc'yi ilk konuma koyduk ki her seferinde buradan başlasın*/
a_mc.addEventListener(Event.ENTER_FRAME,ef)/*sürekli çalışacak fonksiyonu çağırıyoruz*/
}
function ef(e:Event){
drc=(hdf-a_mc.x)/10/*ivme, hedefle mevcut konum arasındaki uzaklıkla orantılı*/
a_mc.x +=drc/*her framede ivme değeri kadar x konum artışı*/
blur.blurX =drc*2/*x ekseni blur değeri ivme ile orantılı*/
blur.blurY =0/*blur y olmasın*/
a_mc.filters = [blur];/*a_mc'ye blur filtresi atanıyor*/
}
 
 

Flash AS3-Kaydırma Çubuğu ScrollBar Yapımı

Bu yazıda herhangi bir flash componenti kullanmadan basit bir scrollbar(kaydırma çubuğu) hazırlamaya çalışacağız. Önce bir scrollbar oluşturmak için sahneye biri diğerinin üzerinde iki çubuk ve scrollbar hareketlerine göre konumu değişecek nesneyi çiziyoruz. Bunlara kodlarla işlem yaptırmak için “cbk_ust”, “cbk_alt” ve “alan” instance name’lerini veriyoruz.
Şimdi kodlamalarda ilk adım olarak üst çubuğun(cbk_ust) boyunu “alan”ın boyuna göre orantılamamız gerekiyor. Böylece alanın boyu(height) ne kadar uzun olursa cbk_ust’un boyu da cbk_alt’a oranla o kadar küçülecektir.



cbk_ust.height=cbk_alt.height/alan.height*cbk_alt.height


Bu kodda cbk_alt’ın(alan’ın sahnedeki görünecek kısmının) uzunluğun alan’ın tamamına oranını bir değer olarak kabul edip bunu cbk_ust’un cbk_alt’a oranına atıyoruz. Böylece alan’ın boyuna göre cbk_ust’un boyu değişiyor.
Şimdi de cbk_ust’u taşınabilir yapmamız gerekiyor.
 

Flash AS3-MSN Ekle Butonu Yapımı

Yazdır Butonu Yapımından Sonra İhtiyacınız Olabilecek Bir Prototip...


Şimdi ilk olarak File-New-Flash File(Action Script3) olarak yeni
bir sayfa açalım.Açtıktan sonra sahneye bir kare çizelim sonra f8 tuşuna basıp bunu movie clip yapalım. Movie Clip seçiliyken properties penceresinden Instance Name kısmına “msn_ekle” yazalım.Msn ekle butonumuzu yapmış olduk.Şimdi frameyi seçin f9 tuşuna basın aşağıdaki kodları yazın.
KOD:
msn_ekle.addEventListener(MouseEvent.CLICK,tiklama);
function tiklama(e:MouseEvent):void{
navigateToURL(new URLRequest("msnim:add?contact=oyunyapimcisi@oyunyapimcisi.com"));
}
Umarım işinize yarar

Flash AS3-İki Nokta Arasındaki Açı


Bu derste iki nokta arasındaki açıyı hesaplamayı anlatacağım.
Yine oyunlarda çok çok kullanılar bir prototip…
İki nokta arasındaki açıyı bulmak için, iki noktanın x ve y değerlerini bilmemiz gerekir.
Bu değerler:
var x1:Number = 20; //Birinci x değeri
var y1:Number = 20; //Birinci y değeri
var x2:Number = 30; //İkinci x değeri
var y2:Number = 30; //İkinci y değeri
 
var uz1:Number = x1-x2; //1. Uzunluk
var uz2:Number = y1-y2; //2. Uzunluk
olsun.
İki nokta arasındaki açıyı bulmak için tanjant fonksyonunu kullanacağız.
Tanjant, açının karşısındaki uzunluk bölü komşu uzunluktur :
pisagor
tan(aci) = uz2 / uz1
Açıyı bilmediğimiz ve uzunlukları bildiğimiz için arctanjant (ters tanjant) ı kullanmalıyız.
Buna göre matematiksel olarak  :
tan(aci) = uz2 / uz1
ise
arctan(uz2 / uz1) = aci
dır.
Şimdi bunu Flash as3 olarak yazalım:
Math.atan2(uz2,uz1);
Flashta değerler Radyan olarak geri döner
Ama biz derece cinsinden istediğimiz için
doğru orantı ile dereceye çevirelim :
RandyanAci = Math.atan2(uz2,uz1);
ise
DereceAci = RandyanAci*180/Math.PI;
dir.
Son olarak kodumuz :
var x1:Number = 20; //Birinci x değeri
var y1:Number = 20; //Birinci y değeri
var x2:Number = 30; //İkinci x değeri
var y2:Number = 10; //İkinci y değeri
 
var uz1:Number = x2-x1;
var uz2:Number = y1-y2;
 
var RandyanAci:Number = Math.atan2(uz2,uz1);
var DereceAci:Number = RandyanAci*180/Math.PI;
trace(DereceAci);
Olacaktır.
Dikkat : Burda çok önemli bir nokta var
var uz1:Number = x2-x1;
var uz2:Number = y1-y2;
Yazarken x1-x2 değilde x2-x1 yazdık; (Flash’ı günlük kullandığımız koordinat düzlemine benzetmek için)
Bunun nedeni Flash’ın koordinat düzleminde 4.bölgede(sağ altta) olması
g1
Yani asıl denklem (Kağıt üzerinde işlem için)
var uz1:Number = x1-x2;
var uz2:Number = y1-y2;

şeklinde olmalıdır.
Not : Yazdığım kodda açı hesaplanırken x1,y1 orjin olarak kabul edilir.