Yansıma Efekti
Yansıma efekti yeni bir efekt olmadığını hepimiz biliyoruz ama etkili ve güzel bir efekt olduğunu kabul ediyorum. Çalıştığım projelerin birinde bu tarz bir efekt istendi, u efekti veren iki sınıf yapısı buldum, ama her ikisinde de farklı sorunlarla karşılaştım. Biri dinamik olarak birden çok efekt oluşturmakta sorun çıkardı. Diğeri de objenin boyu ile eş düzeyde olmayan efekt yapıyordu. Yani sahnedeki movie clibin boyutları 400×300 diyelim, bunu 200×150 düşürüp efekti uyguladığınızda efektin uygulanmasında sorun çıkıyordu çünkü efektin o anki genişlik ve yüksekliği alıyordu, yani orijinal boyutlarını değil. Bunun üzerine yeni bir sınıf oluşturmaya karar verdim. Ve ben sonuçtan memnunum, tabii ilerde bunu biraz daha geliştirebilirim. Kodu ücretsiz olarak kullanabilirsiniz, sınıf yapısını aşağıdan indirip kullanabilirsiniz. Kullanımı ve gerekli kodları da aşağıdaki örnekten alabilirsiniz.
Sınıfın adı Reflection ve oluşturulduğunda ihtiyaç duyduğu tek parametre efekti vermek istediğiniz objenin adı;
-
import com.enginyoyen.effect.*;
-
var refEffect:Reflection = new Reflection(image_mc);
Reflection objesi tam olarak 4 adet parametre daha alıyor ama sadece ilki zorunlu parametre. İlk parametre efekti uygulayacağınız movie clibin adı.
İkinci parametre şeffaflık değeri, yansımanın şeffaflık değerini belirliyor ve varsayılan değeri 0.6. Minimum değer 0.0 ve maksimum değer 1.0.
Üçüncü parametre yansıma oranı belirliyor, bu oran efektin dağılma oranını belirliyor. Varsayılan değeri 155 olarak düzenlendi. Minimum değer 0 ve maksimum değer 255 dir.
Son parametre ise efektin normal objeden uzaklığını belirliyor. Varsayılan değeri 0. Bu değer negatif veya pozitif olabilir herhangi bir üst değeri yok. Bunu sizin belirlemeniz gerekiyor.
Tabii sadece ilk parametreyi vermeniz de yeterli, diğer parametrelerin varsayılan değerleri geçerli olacaktır.
-
import com.enginyoyen.effect.*;
-
var refEffect:Reflection = new Reflection(image_mc, 0.6, 170, 0);
Eğer kullanıldığınız efekti kaldırmak istiyorsanız, yapmanız gereken removeEffect() metodunu kullanmak;
-
import com.enginyoyen.effect.*;
-
refEffect.removeEffect();
Kaynak Kodlar
http://enginyoyen.com/blog/tr/wp-content/uploads/2008/11/reflect.rar
Kolay Gelsin
Engin!
14 Responses to “Yansıma Efekti”
Leave a Reply


Hocam çok güzel ve kullanımı açısından kullanışlı bi sınıf ama bence kodların sürekliliğini sağlasanız daha harika olur die düşünüyorum yani hedef clip imizde hareket uyguladığımızda gölgede de bağımlı hareket olmasını demek istiyorum.. Fakat bu anlamda hakikaten çok güzel bi sınıf yinede.. Teşekkürler.
Kolay gelsin..
Merhaba Kemal,
kodların sürekliliğinden kastın video benzeri bir objenin içeriği değiştiğinde yansımanındamı değişmesi?
Evet hocam mesela dediğiniz gibi.. Yada kendisinde tween bulunan mc gibi..
Merhaba, minik bir bug. Efekti kaldır düğmesine iki kere tıklandığında hata alınıyor.
Merhaba Baybora,
Aslında ikinci seder tıkladığında aldığın hatanın sebebi obje içerisinde başka bir obje bulunmaması. Yani mantık şu şekilde sahneden bir obje kaldırmak istiyorsun, objeyiyi kaldırmak için removeChild() metodunu kullanıyoruz. Eğer obje sahnede ise bu metodla kaldırırsın değilse, aldığın hatanın aynısını alırsın.Yani bunu kodu yazarken kontrol etmen yada kontrol altına alman gerekiyor.Ama sorunu çözmek için bir yol buldum.
İkinci versiyona bir kaç özellik daha eklemiş olurum, bunuda hal edicem.
Geri dönüş için teşekkürler
Selamın aleyküm Ben daha yeni başladım da, rar’ın içindeki Reflection.as dosyasını nereye atacam acaba
Merhaba Şahin,
rar dosyası içerisindeki com adlı klasörün tamamını efekti kullanacağın fla dosyasının yanına koyman gerekiyor. Daha sonra ise yukardaki kodları kullanman yeterli.
saol engin
İnanılmaz bir ders. Çok teşekkür ederim hem yavaş yavaş ActionScript 3.0′a da göz alışıklığım başlıyor, iyiki varsınız hocam.
iyi günler engin bey, imageLoader adlı resim yükleyen ve MovieClip ten türeyen bi tane sınıfım var..
Örneğin :
var il:imageLoader= new imageLoader(”resim.jpg”,”POST”)
addChild(il)
şeklinde resmi yüklüyorum ve sizin sınıfınıza şu şekilde bu imageloader örneğini parametre olarak gönderiyorum:
var ref:Reflection = new Reflection(il,0.5,160,0)
burda tip zorlaması şeklinde hata alıyorum ve şu şekilde yapıyorum :
var ref:reflection = new reflection(MovieClip(il),0.5,160,0)
bu seferde, ArgumentError: Error #2015: Geçersiz BitmapData. şeklinde hata alıyorum…Bu olayı nasıl gerçekleştirebilirim..yadım edrseniz sevinirim..
saygılar
engin bey hatta şu şekilde de yaptım :
var resim:MovieClip = il as MovieClip;
var ref:reflection = new reflection(resim,0.5,160,0)
yine ArgumentError: Error #2015: Geçersiz BitmapData hatasını aldım…
Bunun sebebi nedir acaba?
hocam rar dosyasına ulaşamıyorum. tekrar upload edebilirmisiniz. sizinde dediğiniz gibi interneten yansıma için başka classlar buldum ama dinamik bir gallery oluşturmak istedim her seferinde hata alıyorum. birde sizin yazmış olduğunuz class denemek istiyorum. şimdiden teşekkürler.
@uzunefe
dosya şu anda ftpde yüklü, istersen tekrar dene.
Kolay gelsin
@seyfx
resmi yüklediğin kodu gönderirsen eğer hatayı düzeltebiliriz.