Ders 38

Bana bu sayfadaki ders hakkında soru yöneltmek için anasayfada bulunan CANLI DESTEK'e tıklayınız. Tabi benim o anda bilgisayar başında olmam lazım. Neyse, dersler hakkında görüşmek iyi olur. 'Yaptım çalışmadı'yı kabul etmem ama. Dersleri Dreamweaver'da yazarken bir yandan da Flash'da adım adım uyguluyorum. Hatalı durum varsa düzeltiyorum. Belki farklı sistemlerde sorun olabilir. Mesela Windows 98 'de çalışmadı veya yeni Internet Explorer 7'de sorun çıktı, bunun gibi sorunları bildirirseniz sevinirim.

Derslerin içerikleri belli bir sıraya göre gitmeyor. Aklıma ne gelirse veya ilginç bulduğum, pratik veya işe yarar ne bulursam eklemeye çalışacağım. Eğer belli bir konuda iyi bir örnek görmek istiyorsanız sitemde bunu bana bildirin bir E-posta ile. Flash 9 'un tam anlamıyla çıkmasıyla Flash 8'e , yani ActionScript 2.0 'a veda ettim gibi. Tüm planlar şu an AS 3.0 üzerine...

 

Ders 38 ( Temmuz 2007 )

Konu : Flash 9 ve AS 3 ile drag olayına farklı yaklaşım

Şimdiye kadar hep startDrag ve stopDrag komutlarını drag edilecek objenin onPress ve onRelease fonksiyonlarına yazmıştık. AS3 'de onReleaseOutside olmadığından farklı bir yöntem kullanmak daha doğru netice verecektir.

Neden mi ? Siz drag ettiğiniz objeyi çok hızlı drag ederken Flash Player görüntüsünü size yetiştiremez ise ve sizin fare o esnada objenin üstünde değilken fareyi bırakırsanız istenilen sonucu elde edemezsiniz ve drag olayı devam eder...

Şu başlangıç dosyasını indiriniz. Burada göreceğiniz üzere 2 basit movieClip var sahnede: mc1 ve mc2Şimdi de alttaki kodları ilk frame 'e yazınız:

// mcm adlı MovieClip değişkeni oluşturalım
var mcm:MovieClip;

// mc1 ve mc2 nin üstüne fare ile tıklandığında f1 fonksiyonu çalışsın
mc1.addEventListener(MouseEvent.MOUSE_DOWN,f1);
mc2.addEventListener(MouseEvent.MOUSE_DOWN,f1);

// f1 fonksiyonu
function f1(evt:MouseEvent) {
// evt.target ile bu fonksiyonu çağıran nesneyi buluyoruz ve mcm'e atıyoruz
mcm=MovieClip(evt.target);
mcm.startDrag(true);
}

// sahne üzerinde farenin tuşu kaldırıldığında f2 çalışsın
stage.addEventListener(MouseEvent.MOUSE_UP,f2);

// eğer mcm'e bir şey atanmış ise mcm'i stoDrag yapıp mcm'i tekrar boş duruma getiriyoruz
function f2(evt:MouseEvent) {
if (mcm!=null) {
mcm.stopDrag();
mcm=null;
}
}

Bu ders hakkında sorularınızı hakan@FlashDersi.com 'a Ders38 konusuyla yollayabilirsiniz. Fla dosyasını da yollamayı unutmayınız.

yukarı git