ActionScript 3.0: Sürükle Bırak
Kasım 20th, 2009 Bulunduğu kategori AS3 Eğitim İçerikleri
Bu dersimizde birçok etkileşimli uygulamada sıkça kullanılan “sürükle-bırak” uygulamasını örnek bir çalışma üzerinden anlatmaya çalışacağım.
Bu uygulama için aşağıdaki resimde gösterilen moviecliplerin ve dynamic text alanlarının oluşturulması gerekiyor. ![]()
Sürüklenecek Movieclip instance adları: c1,c2,c3,c4,c5,c6
Hedef Movieclipler (Boş kutucuklar) instance adları: kutuc1, kutuc2, kutuc3, kutuc4
Dikkat edildiyse Ayrıca c5 ve c6 movieclipleri fazladan konularak kullanıcının bilgisini iyice test etmesi istenmektedir.
Uygulama Kodları:
//Sürüklenecek olan MovieClip(İller)instance adları dizide saklanıyor.
var c:Array=new Array("",c1,c2,c3,c4,c5,c6);
//MovieCliplerin ilk konumları belirleniyor.
var baslangickonum:Point=new Point();
//MovieClip sürükleme sayısı ve doğru sürüklenme
//sayısını öğrenmek için değişkenler tanımlanıyor.
var denemeSayisi:int=0;
var dogruSayisi:int=0;
//Sürüklenecek moviecliplerin hepsine buton özelliği
//kazandırılıyor.
//Ayrıca mouse'a basılı tutulduğunda ve bırakıldığında
// tetiklenecek fonksiyonlar atanıyor.
for (var i:uint=1; i<c.length; i++)
{
c[i].buttonMode=true;
c[i].addEventListener(MouseEvent.MOUSE_DOWN,surukle);
c[i].addEventListener(MouseEvent.MOUSE_UP,birak);
}
//Mouse'a basılı tutulduğunda çalışacak fonksiyon
function surukle(evt:MouseEvent):void
{
//Hangi movieclipe mouse ile basıldı ise o sürüklenmeye
//başlıyor.
evt.currentTarget.startDrag();
//Sürüklenen movieclipin başlangıç konumu belirleniyor.
baslangickonum.x=evt.currentTarget.x;
baslangickonum.y=evt.currentTarget.y;
}
//Mouse bırakıldığında çalışacak fonksiyon
function birak(evt:MouseEvent):void
{
//kontrolEt(evt) fonksiyonu çağrılıyor.
kontrolEt(evt);
}
//birak() fonksiyonu çalıştığında çalışacak fonksiyon
function kontrolEt(evt:MouseEvent)
{
//Sürüklenen movieclip artık sürüklenmiyor.
evt.currentTarget.stopDrag();
//Sürüklenen movieclipin ismi öğrenilip
// "kutu" adlı string ifadeyle birleştirilip hedefMc adlı
// değişkende tutuluyor.
var hedefMc:String="kutu"+evt.target.name;
//hedefMc adlı değişkenin bir DisplayObject olduğu
//belirtiliyor.
var hedef:DisplayObject=getChildByName(hedefMc);
// Sürüklenen movieclipin kutuların üzerine
//bırakıldığında o kutu(hedef movieclipler kutuc1,....)
//boş değilse ve kutunun instance adının sürüklenen
//movieclipin "hedef" adlı o anda oluşturulan instance
//adı ile aynı ise çalışacak komutlar belirleniyor.
if (evt.target.dropTarget!=null&&evt.target.dropTarget.parent==hedef)
{
//Hedef kutuya sürüklenen movieclip doğru yere
//bırakıldıysa tekrar sürüklenmemesi ve bırakılmaması
//sağlanıyor.
evt.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN,surukle);
evt.currentTarget.removeEventListener(MouseEvent.MOUSE_UP,birak);
//Sürüklenen movieclipler kutu(kutuc1,..) moviecliplerin
//konumuna yerleştiriliyor.kutu moviecliplerin
//registration pointlerine dikkat etmek gerekiyor.
evt.target.x=hedef.x;
evt.target.y=hedef.y;
//DOğru yere sürüklenen moviecliplerin buton özelliği
//kaldırılıyor.
evt.currentTarget.buttonMode=false;
//Her sürükleme işleminde doğru ve deneme sayıları
//artırılıyor ve bunlar stringe çevrilerek ekrandaki
// dinamik text alanlarında gösteriliyor.
dogruSayisi++;
denemeSayisi++;
denemeSayisi_txt.text="Deneme Sayısı:"+String(denemeSayisi);
dogruSayisi_txt.text="Doğru Sayısı:"+String(dogruSayisi);
//Doğru sayısını kontrol eden fonksiyon çağrılıyor.
sonuc(evt);
}
//Eğer sürüklenen movieclip doğru kutuya bırakılmadıysa
//ilk konumuna geri gönderiliyor ve deneme sayısı
//artırılıyor.
else
{
evt.currentTarget.x=baslangickonum.x;
evt.currentTarget.y=baslangickonum.y;
denemeSayisi++;
denemeSayisi_txt.text="Deneme Sayısı:"+String(denemeSayisi);
}
}
//Doğru sayısını kontrol eden sonuc() fonksiyonu
//çalışıyor
function sonuc(evt:MouseEvent)
{
//Doğru sayısı 4 olursa çalışacak komutlar belirleniyor
if (dogruSayisi==4)
{
//Doğru sayısı 4 olunca "Tebrikler" iletisi
//ekranda gösteriliyor.
durum_txt.text="Tebrikler";
//Yanlış olan c5 ve c6 adlı moviecliplerin sürükleme,
//bırakma ve buton özellikleri ortadan kaldırılıyor.
c5.removeEventListener(MouseEvent.MOUSE_DOWN,surukle);
c5.removeEventListener(MouseEvent.MOUSE_UP,birak);
c5.buttonMode=false;
c6.removeEventListener(MouseEvent.MOUSE_DOWN,surukle);
c6.removeEventListener(MouseEvent.MOUSE_UP,birak);
c6.buttonMode=false;
}
// Doğru sayısı 4 değilse ekranda gösterilecek
//ileti belirleniyor.
else
{
durum_txt.text="Daha Çok Çalışmalısınız";
}
}
Uygulama Dosyası:suruklebirak.rar

Kasım 22nd, 2009 at 00:59
çok teşekkürler,
tam da ihtiyaç duyduğum zamanda bu öğreti geldi. iyi olacak hastanın doktor ayağına gelirmiş
devamını bekliyoruz.