Sprite - Shape - MovieClip Arasındaki Farklar Nelerdir?
Yağız Gürgül Tarih: 7/04/2008 Yorum: 1 adet
Okunma : 616 Tutanlar: Bu yazıyı 2 kişi tuttu.
AS3 ile Sprite ve Shape geldi.İyiki de geldi çünkü yeni gelen bu iki sınıf performansı iyice arttırıyor.Biliyorsunuzki her objenin bir hafızası var.İçindeki başka objeler, değişkenler ile bu hafıza büyüyor ve performansı yavaşlatıyor.
Sprite ve MovieClip Arasında Fark var mı?
Tabiki var.Öncelikle en büyük farkı Sprite’ın bir timeline’ı yok.Yani sprite içine bir değişken atayamazsınız.Bunu yaptığınız taktirde hata oluşur. Sprite çizim araçlarını(API) çalıştırabilir.Veya içine başka bir obje(Button, MovieClip, Shape…) alabilir. MovieClip için geçerli olan startDrag alpha gibi kodları kullanabilir.MouseEvent ekleyebilirsiniz. Ama içine değişken eklenemediği için(XML, String, Number, int…) hafızası MovieClip’ten küçük ve bu yüzden Sprite daha performanslı.
Sprite için örnek bir kod:
var obje:Sprite = new Sprite();
obje.graphics.beginFill(0xFF0000);
obje.graphics.drawCircle(0,0,50);
obje.startDrag(true);
addChild(obje);
Bu kodu yazdığınızda bir sprite objesi oluşur.İçi boyanır ve bir daire çizilir.Ardından bu objeye startDrag() komutu verilir.Gördüğünüz gibi bir sorun yok.
Ama şu kodu denerseniz: var obje:Sprite = new Sprite(); obje.graphics.beginFill(0xFF0000); obje.graphics.drawCircle(0,0,50); obje.startDrag(true); // obje.degisken="as3″; addChild(obje);
Hata verir.Bunun nedeni demin de söylediğimiz gibi Timeline’a sahip olmaması; ama MovieClip ile denerseniz herhangi bir soruna ulaşmazsınız:
var obje:MovieClip = new MovieClip();
obje.graphics.beginFill(0xFF0000);
obje.graphics.drawCircle(0,0,50);
obje.startDrag(true);
//
obje.degisken="as3″;
trace(obje.degisken);
addChild(obje);
Output ekranında as3 yazar.Gördüğünüz gibi MovieClipler değişken alabiliyor.
Sprite ile Shape Arasında Fark var mı?
Evet var.Sprite’ın MovieClip özelliklerini alabildiğini söylemiştik; ama Shape bunları ve değişkenleri alamıyor.Shape sadece çizim araçlarını(API) kullanabiliyor ki tek özelliği budur.Bu durumda hafızası çok küçülüyor.Bu yüzden Shape daha performanslı.
Örnek Shape kodu:
var obje:Shape = new Shape();
obje.graphics.beginFill(0xFF0000);
obje.graphics.drawCircle(0,0,50);
obje.x=60;
obje.y=200;
addChild(obje);
Test ettiğinizde bir hata almicaksınız; ama unu denerseniz:
var obje:Shape = new Shape();
obje.graphics.beginFill(0xFF0000);
obje.graphics.drawCircle(0,0,50);
obje.x=60;
obje.y=200;
obje.startDrag(true);
addChild(obje);
hata alırsınız.Gördüğünüz gibi startDrag komutunu kabul etmiyor.obje. yazdıktan sonra açılan küçük pencereden hangi özellikleri alabildiğini görebilirsiniz.
Bir de değişken atarak deneyin:
var obje:Shape = new Shape();
obje.graphics.beginFill(0xFF0000);
obje.graphics.drawCircle(0,0,50);
obje.x=60;
obje.y=200;
obje.degisken="as3″;
addChild(obje);
Gene hata verir; çünkü Shape sınıfının da bir timeline’ı yok.
Peki Sprite veya Shape içine hiç mi değişken atıyamamayız? Sprite veya Shape extend edilmiş bir sınıf yaratırsak kendi Shape veya Sprite sınıfımızı yapabiliriz.
Aslında performans bakımından bu üçü arasından en iyisi Shape olarak gözükse de bu sizin kullanacağınız alana bağlı… Mesela bir labirent oyunu yapıyorsanız labirentleri Shape ile çizmek daha performanslıdır. Ama bir menu yapıyorsanız Sprite daha iyidir.
Haber
MMIstanbul Adobe UG
ColdFusion, Flex, AIR, Flash, PDF, Dreamweaver, Fireworks, Photoshop, Illustrator, iNdesign, Premiere, Soundbooth, Lightroom, InCopy, JRun, LiveCycle, Acrobat, AfterEffects, Resmi Adobe Kullanıcı Grubu.
Etkinlikler
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
Kimler Burada? 
Son 1 dakika içinde MMIstanbul' da 331 (1 kayıtlı, 330 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:
MMIstanbul Blog'undan
Neler Yapılabilir?
Yeni bir portal, 30 civarında online / offline etkinlik, seminer vb rağmen MMIstanbul sanıyoruz ki halen hakettiği ilgiyi göremedi. " ...
500 Hatası Hakkında!
Reklam, MMIstanbul ve Yeni Projeler (Durumumuz Bu Tarzında)
Ne Nedir Kampanyası Başlıyor!
Çok Merak Edenler için; MMIstanbul Geliştirme Ekibi ve Çalışma Ortamımız





yağız, yazın bence as 3.0 giriş konusu için güzel bir başucu eseri olmuş. İlk başta ben shape i değilde sprite ı gereksiz görmüştüm ama sonra, önceki as 2 deneyimlerimde vektorlerin cpu sömüren kısıtlayıcı taraflarını ve olmazsa olmaz movieClip içinde kullanım zorunluluğunu düşündüğümde gayet mantıklı geldi. Her as 3.0 öğrencisi sprite ve shape ile yüzleceşeceği için bu kısa/öz bilginin mutlaka incelenmesi çok faydalı olacaktır. Eline sağlık.