Profili Göster

Actionscript 3.0 ve Display List

Engin Yöyen Tarih: 2/01/2008 Yorum: 1 adet

Okunma : 548 Tutanlar: Bu yazıyı 2 kişi tuttu.

Actionscript 3 yapılan her uygulamada görüntülenen görsel elementler display list adındaki bir hiyerarşide toplanıyor.Yani bütün görsel öğeler display list te toplanıyor.Bu hiyerarşide yer alan objeler z-sıralama sistemine göre pozisyon alıyor.Bu makalede display list’e nasıl movie clip, shape, sprite, text area vb objeleri ekleyip çıkarabileceğinizi, ekrandaki öğelerin z-sıralamasını nasıl yapabileceğinizi, ayrıca Actionscript 2 de sıkça kullanılan attach movie, createMovieClip, duplicateMovieClip, gibi artık kullanılmayan komutlara da değineceğim .Kaynak kodların tamamına sayfanın en altından ulşabilirsiniz.

addChild() ve new() metodları

Actionscript 3 te yeni bir obje oluşturma için new metodu kullanılır.Bu metodla sadece movie clip değil ses, video, componentler vb birçok öğeyi oluşturabilirsiniz, hatta kütüphanenizde duran bir öğeye linkage id vererek o objeyi bile kütüphaneden çağırabilirsiniz.Ama önce bir örnekle yeni bir movie clibi nasıl oluşturabileceğimize bir bakalım.

var my_mc:MovieClip = new MovieClip();

Kodda da açıkça görüldüğü gibi çok basit. Yeni bir movie clip oluşturmak çok basit ama biz sadece movie clibi oluşturduk bu movie clibi ekrana yani display list’imize eklemek için ise addChild metodunu kullanmamız gerekiyor.


addChild(my_mc);

Şimdi kütüphanede yer alan bir movie clibi nasıl kullanabileceğimize bakalım. İlk olarak kütüphaneden ekrana eklemek istediğiniz movie clibin üzerine sag tıklayın ve Linkage i seçin.

mmistanbul.com

Önünüze gelen pencerede Export for ActionScript seçeneğini seçin.

mmistanbul.com

Daha sonra Class bölümüne movie clibinize vermek istediğiniz class adını seçin, ve OK tuşuna basın.

mmistanbul.com

Önünüze gelen hata mesajı, verdiğiniz movie clibe ait bir class yapısının olmadığı için hata veriyor.OK derseniz bu class ait bir class yapısını flash oluşturacaktır, bu bölümü atlayıp OK tuşuna basıyoruz.

mmistanbul.com

Şimdi timeline daki ilk boş frame tıklayıp actionscript panelini açın ve aşağıdaki kodu yazın

var p1_mc:pickman = new pickman();
p1_mc.x=150;
p1_mc.y=150;
addChild(p1_mc);

Buradaki mantık aslında çok basit kütüphanenizde yer alan bir öğeye var olan bir class gibi davranıyorsunuz. Kulağa zor geliyor ama o kadar zor değil.

Sprite()

Sprite’ları timeline’ları olmayan movieclipler gibi düşünebilirsiniz, avantajı ise vector grafikler gibi objeler için daha az yer kaplamasıdır.Kullanımı ise MovieClip ile aynı;

var my_sprite:Sprite = new Sprite();
addChild(my_sprite);

Kütüphanedeki bir movieClip öğesine Sprite şeklinde davranmak istiyorsanız yapmanız gereken linkage identifer bölümünden class ın altındaki Base Class bölümünde ;

mmistanbul.com

flash.display.MovieClip base clasını flash.display.Sprite yapmanız.Burada kütüphanedeki obje için temel class seçiyorsunuz, bu da seçtiğiniz classın özelliklerini taşıyacaktır demektir.

addChildAt();

Bu metod ile ekrana eklemek istediğiniz objenin index numarasına belirterek objeyi ekrana ekliyorsunuz .

addChildAt(my_mc, 3);

contains();

Contains metodu bir objenin başka bir objenin içinde olup olmadığını kontrol eder.Eğer içindeyse true değilse false değerini verir.

var mc1:MovieClip = new MovieClip ();
var mc2:MovieClip = new MovieClip ();
var mc3:MovieClip = new MovieClip ();
mc1.addChild(mc2);
trace(mc1.contains(mc2)); // true
trace(mc1.contains(mc3)); // false

getChildAt ()

Şahsen bu metodu ilk okuduğumda pek işime yaramayacağını düşünmüştüm ama hayat kurtarabiliyor.getChildAt metodu belirtilen index numarasındaki objenin instance bilgisini geri dönderiyor.Şöyle izah edim ekrana bir movie clibin birden fazla kopyasını attığınızda, movie cliplere index numarası ile movie clipin instance name’ini alabilirisiniz, yada seçtiğiniz movie clibin x ve y koordinatlarını değiştirebilirsiniz ve daha birçok özelliğe ulaşıp buradan değiştirebilirsiniz.

var main_mc:MovieClip = new MovieClip();
addChild(main_mc);
var mc1:MovieClip = new MovieClip();
main_mc.addChild(mc1);
mc1.x=50;
trace(main_mc.getChildAt(0).x); //50

getChildByName ();

getChildAt metodundan farkı display list’teki index numarası yerine instancename kullanıyor, yani kullandığınız objenin instance name’i ile işlem yapıyorsunuz.

var main_mc:MovieClip = new MovieClip();
addChild(main_mc);
var mc1:MovieClip = new MovieClip();
main_mc.addChild(mc1);
mc1.x=50;
mc1.name = "test_mc";
trace(main_mc.getChildByName("test_mc").x);//50

getChildIndex ()

Objenin display list’deki index numarasını veriyor.

var main_mc:MovieClip = new MovieClip();
addChild(main_mc);
var mc1:MovieClip = new MovieClip();
main_mc.addChild(mc1);
mc1.x=50;
mc1.name = "test_mc";
trace(main_mc.getChildIndex(mc1));//0

removeChild ()

Adından da rahatça anlaşılacağı gibi display list’teki objeyi display list’ten kaldırmak için, tabii bu da seçilen objenin ekrandan kaldırılması demek oluyor.

var main_mc:MovieClip = new MovieClip();
addChild(main_mc);
removeChild(main_mc);

removeChildAt ()

removeChild metodundan tek farkı index numarası ile objeyi ekrandan kaldırabilmeniz.

var main_mc:MovieClip = new MovieClip();
addChild(main_mc);
removeChildAt (0)

setChildIndex ()

Ekranda bulunan objelerin görüntüleme sırasını değiştiriyor.Kısacası index numarasını değiştiriyor.Sıralama sistemi ise klasik sıralama sistemi, index numarası küçük olan en altta index numarası büyük olan en üstte.


setChildIndex(getChildAt(2), 0);

swapChildren ()

swapchildren ekranda bulunan objelerin index numarasını değiştiriyor.setChild index teki farkı ise set childindex metodunda bir objenin index numarasını değiştirince diğer index numaralrı otomatikmen değişiyor.SwapChildren da ise iki objenin index numaraları birbiri ile değişiyor ve ekrandaki diğer index numaraları sabit kalıyor.

swapChildren(circle_blue, circle_red);

swapChildrenAt ()

swapChildren metodundan tek farkı index numarası ile index değiştirme işlemini yapıyor.

swapChildrenAt(0, 2);

numChildren()

DisplayListcontainer sınıfının bu özelliği ile bir objenin içindeki toplam index numarasını yani toplam obje sayısını görüntüleyebiliyorsunuz.

trace(my_mc.numChildren);

mouseChildren()

İlk bakışta biraz garip ve kafa karıştırıcı bulduğum ama sonradan çok işime yarayacağını öğrendiğim bir özellik.Bir objenin içindeki başka bir objenin mouse enabled olup olmayacağını true false değeri ile belirtiyorsunuz.Eğer obje mouse enabled ise kullanıcı objenin özelliklerini kullanabilir ve etkileşimi geçebilir.Default değeri true.

my_mc.mouseChildren =false;

Bu biraz karışık bir örnek olduğu için kodların tamamını yazmayacağım, kaynak dosyaları indirip kontrol edebilirsiniz.

textSnapshot();

Dynamic text box lardan veri okumak yeni birşey değil ama şu anda statik textboxlardan da veriyi okuyabiliyorsunuz. Ekrana static text box içerisine birşeyler yazın ve test edin.

trace(this.textSnapshot.getText(0, this.textSnapshot.charCount));

Hepsi bu kadar.Aslında değil ama en azından en çok kullanılan ve işinize ençok yarıyabilecek olanlar bunlar. Kaynak kodları indirmeniz size yardımcı olucaktır.

Kaynak Kodları buradan indirebilirsiniz.

http://enginyoyen.com/blog/tr/wp-content/uploads/2007/11/displaylist.rar

Kolay Gelsin

Engin Yöyen!

aç-kapa İçeriğin rss beslemesi kullanımda değil Yorumlar

Profili Göster
ismail şimşek 16/07/2008

mükemmel bir anlatım olmuş teşekkür ederiz. aradığım şey sanırım buydu.

MMIstanbul Adobe UG MMIstanbul Adobe UG

adobe user group

ColdFusion, Flex, AIR, Flash, PDF, Dreamweaver, Fireworks, Photoshop, Illustrator, iNdesign, Premiere, Soundbooth, Lightroom, InCopy, JRun, LiveCycle, Acrobat, AfterEffects, Resmi Adobe Kullanıcı Grubu.

yeni üyelik | şifremi unuttum

aç-kapa Fuar CeBIT 2008 Bilişim Eurasia 7 - 12 Ekim 2008' de

CeBIT 2008 Bilişim Eurasia 7 - 12 Ekim 2008' de

CeBIT Bilişim Eurasia bu yıl 7 – 12 Ekim tarihlerinde düzenleniyor Adını dünyanın en büyük on fuarı arasına yazdırarak, İstanbul’u Avrasy...
Kategori: Fuar

aç-kapa Yarışma Altın SIM Kart Ödülleri

Altın SIM Kart Ödülleri

Altın SIM Kart Ödüllerinin bu yıl birincisi düzenleniyor. Üç ana kategorideki toplam 20 alt kategoride 200 adayın yarışacağı organizasyonun oylaması h...
Kategori: Yarışma

aç-kapa Konferans IBM Yazılım Zirvesi '08, Değişim Açlığı

IBM Yazılım Zirvesi '08, Değişim Açlığı

Değişim açlığı, Hungry for Change teması çerçevesinde düzenlenecek IBM Yazılım zirvesi Ankara ve İstanbulda düzenlenecek: 15 Ekim 2008 Swissotel the...
Kategori: Konferans

aç-kapa Fuar Contemporary İstanbul Sanat Fuarı

Contemporary İstanbul Sanat Fuarı

Contemporary İstanbul Sanat Fuarı, 16-19 Ekim tarihleri arasında sanatseverlerle buluşacak. Bu yıl üçüncüsü düzenlenen fuar, İstanbul Lütfi Kırdar Ulu...
Kategori: Fuar

aç-kapa Yarışma TBD - Halıcı 15. Bilgisayarla Beste Yarışması

TBD - Halıcı 15. Bilgisayarla Beste Yarışması

TBD – Halıcı 15. Bilgisayarla Beste Yarışması TBD – Halıcı Bilgisayarla Beste Yarışması Türkiye Bilişim Derneği tarafından düzenlenen &q...
Kategori: Yarışma

üyeler Son Kahramanlar...

stats Kimler Burada? web stats

Son 1 dakika içinde MMIstanbul' da 296 (3 kayıtlı, 293 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:

coldfusion mysql ubuntu
 
sponsor adobe istanbul