baseclass ile dragdrop
Ulaş ŞEKER Tarih: 9/11/2011 Yorum: 0 adet
Okunma : 914 Tutanlar: Bu yazıyı 0 kişi tuttu.
Baseclass kullanarak,sahnede istenilen nesnelerin bu harici sınıftan miras almasını ve yeni özellik - yöntemlere sahip olmasını sağlamaya çalışağız.
Aslında yaptığımız her bir movieclibin içerisine kod yazarak istenilen zamanda bu kodların çalışmasını sağlamaktan başka bir şey değil.Biz bundan farklı olarak bu kodları herbir movieclip için değil tek bir sınıfın içerisinde toplayarak belirtilen nesnelere atayıp bu işlemi tek bir yerden gerçekleştireceğiz.
Hazırlanacak uygulamayı kısaca anlatmak istiyorum;Türkiye haritası üzerinden sınırları içerisinde üniversiteye sahip 7 ili seçip movieclibe çevirerek uygulamanın sağ tarafında yer alan alana belirlediğim sırayla yerleştirdikten sonra bu moviecliplere o illerin isimlerini instance name olarak atadım.Sağ tarafta yer alan iller baseclasstan miras alacak olan moviecliplerdir.Haritanın üzerinde ise dogru eşleştirme yapıldığında görünecek olan(bunların alfasını 0 olarak ayarlayacağız) movieclipler yer almakta.
Uygulamanın bitmiş hali; turkeymap.swf
Aşağıdaki resimde çalışmaya başlamadan önce elimizde olması gereken grafiksel malzemelerin alması gereken son hali görebilirsiniz;
Harita üzerinde yer alan il isimlerinin alfalarını sağ taraftan 0 olarak ayarlayalım.Sahne alanın dışında yer alan win instance name e sahip olan movieclip eşleştirme tamamlandığında sahnede belirerek uygulamayı yeniden çalıştırmamızı sağlayacak kodları tetikleyecek movieclip olacaktır.
Sağ tarafta yer alan moviecliplerin instance name leri seçilen illerin isimlerinden oluşmaktatır.(istanbul,eskisehir,isparta,diyarbakir,izmir,erzurum,elazig),harita üzerindeki moviecliplerin instance name leri il isimlerinin sonuna "_target" eklenerek verilmiştir.
(istanbultarget,eskisehirtarget,ispartatarget,diyarbakirtarget,izmirtarget,erzurumtarget,elazig_target)
dragDrop ve Main.as adında iki class oluşturalım bunlardan Main.as yi ana class olarak tanıtalım.Bunun için properties sekmesinde class alanına oluşturduğumuz Main class ın adını yazalım ve ardından hemen yan tarafında yer alan kalem işaretine tıklayalım.
Main.as nin içeriği aşağıdaki gibidir.
package
{
import flash.display.*;
import flash.events.*;
public class Main extends MovieClip
{
var arr:Array;
var obj:dragDrop;
var num:uint = 0;
var speed:uint = 20;
public function Main()
{
arr = [istanbul,eskisehir,isparta,diyarbakir,izmir,erzurum,elazig];
for (var i:uint=0; i<arr.length; i++)
{
obj = arr[i];
obj.target = getChildByName(obj.name + "_target");
}
}
function match():void
{
num++;
if (num==arr.length)
{
win.addEventListener(Event.ENTER_FRAME,winUp);
}
}
function winUp(e:Event):void
{
win.y -= speed;
if (win.y <= 0)
{
win.y = 0;
win.removeEventListener(Event.ENTER_FRAME,winUp);
win.addEventListener(MouseEvent.CLICK,winDown);
}
}
function winDown(e:MouseEvent):void
{
win.removeEventListener(MouseEvent.CLICK,winDown);
win.addEventListener(Event.ENTER_FRAME,winDownEnterFrame);
for (var i:uint=0; i<arr.length; i++)
{
obj = arr[i];
getChildByName(obj.name + "_target").alpha = 0;
obj.visible=true
}
num=0
}
function winDownEnterFrame(e:Event):void
{
win.y += speed;
if (win.y >= stage.stageHeight)
{
win.y = stage.stageHeight + 25;
}
}
}
}
Uygulamanın sağ tarafındaki moviecliplere dragDrop sınıfını baseclass olarak atamak içinse kütüphanede uygulamanın sağ tarafında yer alan movieclipleri bulanarak sağ tıkladıktan sonra properties alanını açalım.
Açılan symbol proberties penceresinde baseclass alanına dragDrop sınıfını tanımlayalım tüm iller için aynı işlemi tekrarlamamız gerekiyor. dragDrop.as nin içeriği aşağıdaki gibidir;
package
{
import flash.display.*;
import flash.events.*;
public class dragDrop extends MovieClip
{
var iniX:Number;
var iniY:Number;
var target:DisplayObject;
public function dragDrop():void
{
iniX = x;
iniY = y;
addEventListener(MouseEvent.MOUSE_DOWN,drag);
buttonMode=true
addEventListener(MouseEvent.ROLL_OVER,scaleUp);
addEventListener(MouseEvent.ROLL_OUT,scaleDown);
}
function scaleUp(e:MouseEvent):void
{
scaleX=1.1
scaleY=1.1
}
function scaleDown(e:MouseEvent):void
{
scaleX=1
scaleY=1
}
function drag(e:MouseEvent):void
{
startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP,drop);
parent.addChild(this)
}
function drop(e:MouseEvent):void
{
stopDrag();
if(hitTestObject(target))
{visible=false;target.alpha=1;Object(parent).match();}
x = iniX;
y = iniY;
}
}
}
Main.as ,dragDrop.as ve fla dosyaları aynı dizinde bulunmalıdır. Fla dosyasını aşağıdabulabilirsiniz. turkeymap.fla
İçeriğe kayıtlı yorum bulunmuyor. İlk yorumu siz buradan ekleyebilirsiniz.
Makale
İlişkili makale bulunamadı.
Haber
İlişkili haber bulunamadı.
Kimler Burada? 
Son 1 dakika içinde MMIstanbul' da 53 (50 kayıtlı, 3 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:
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)








