Zoque.Forum
Dirsek Teması:
Geri Dön Zoque.Forum » Tasarımcının Mutfağı » Flash, AIR, Flex, Silverlight » Flash'da performans için nelere dikkat edilmeli


Yanıt
 
LinkBack Seçenekler
Old 24.07.2008   #1 (permalink)
 
psycho13x's Avatar
 
Üyelik Tarihi: 24.06.2008
Yer: Eskişehir
Yaş: 27
Mesaj: 24
Flash'da performans için nelere dikkat edilmeli


Merhaba arkadaşlar,

flash ile hazırladığımız projelerde, performans açısından nelere dikkat etmeliyiz. Bildiğimiz püf noktalarını yazarsak hepimiz için faydalı olacağına inanıyorum.

Konu ile ilgili gezinirken şöyle bişey buldum:
Garbage Collection - RAM Yığılması

AS 3.0 ile oluşturulan bir Sprite objenin içine BitmapData eklenip, daha sonra bu objenin işi bitip de removeChild() ile Sprite kaldırıldığında BitmapData RAM'de kalıyor ve ekleyip-çıkarttıkça RAM'de yığılma yaşanıyor. Bunun sebebi de Garbage Collection'ın bitmapData'yı kontrol edememesi. Linkteki örnekte;

Kod:
var b = new BitmapData(100,100,false,0xff0000);
b.noise(int(Math.random()*int.MAX_VALUE));
var bmp = new Bitmap(b);
var spr = new Sprite();
spr.x = e.stageX;
spr.y = e.stageY;
spr.addChild(bmp);
main.addChild(spr);
şeklinde eklenen obje,

Kod:
main.removeChildAt(0);
şeklinde kaldırıldığında bu problemle karşılaşılıyor.

Bu sorunu çözmek için;

Kod:
main.getChildAt(0).getChildAt(0).bitmapData.dispose();
main.removeChildAt(0);
kodda görüldüğü üzere, dispose() ile Sprite'a ekli bulunan BitmapData'yı kaldırmak gerekiyor.


Karşılaştıkça yeni ip ucları eklemeye çalışacağım.

Saygılar...
psycho13x şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 24.07.2008   #2 (permalink)
 
perplex's Avatar
 
Üyelik Tarihi: 03.01.2007
Yer: istanbul
Yaş: 28
Mesaj: 189
Re: Flash'da performans için nelere dikkat edilmeli

evet dispose edilebilir ya da null a set edilebilir.

genel olarak bikaç şey ben de yazim as 3.0 için

* performans konusunda en önemli sorun event larda yaşanır. event register ettikten sonra işimiz bittiğinde kaldırmalıyız. en çok yapılan hata display objesini kaldırılınca event ın da kaldırıldığının sanılması. Örnek,

var m:Sprite = new Sprite();
m.addEventListener(Event.COMPLETE, fonksiyon);
m = null;

burda m'i null a set ederek garbage collectiona uygun hale getirsek dahi event i kaldırmadığımız event devam edecektir.o yüzden removeListener'la kaldırmalıyız. Aslında en güzeli bir fonksiyon yapıp hasEventListener la event lerin listesini alıp(varsa) kaldırmak sonra null a set etmek.

Ayrıca eventler'i weakreference kullanıp evente refere eden obje kalmadığında otomatik silinmesini sağlayabilriiz.

* null demişken addChild la display listesine eklenmiş bir objeyi removeChild ile silindiğinin zannedilmesi de ayrı hata. removeChild sadece display listesinden kaldırır. obje var olmaya devam eder. null a set edip ve objeye başka bir referans brakmayak anca silinebilir hale getirebiliriz.

* başka bir örnekse setInterval. setInterval kullanıyorsak işimiz bittiğimizde kesin silmeliyiz. Fakat loop a girecek işlemler için Timer'ı kullanmamız AVM2 için daha performanslı

* değişken tanımlamalarını düzgün yapmalıyız. 1,2,3,4 gibi değerler alan bir değişken için Number yerine uint kullanmalıyız. aynı şekilde frame animasyonu olmayan bir display objesi içn de Sprite tanımlaması yapmak performansı arttırır.

Sadece as 3 e geçerli olmayan aklıma gelen başka durumları da söyliyim.


* çıkarma toplamaya göre her zaman daha hızlıdır

for (i=0;i<length;i++) yerine for(i=length-1;i>=0;i--) daha hızlıdır

hatta

while (i--) şeklinde yazmak bildiğim en performanslı yöntem

* kısa değişken isimleri de performansı arttırır. mesela 3d enginlerde vektörel hesaplamalarda çok kullanılır. Atıyorum var xPositionOfTheMovieClip yerine xp diyebilirsiniz. ama hiçbi zaman kodunuzu anlaşılmaz hale getirmeyin.

* switch yerine if else else else.. yazmanız daha hızlı sonuç verir. ama farkedilmez bile belki

* fonksiyon içinde fonksiyon kullanmak performansı azaltır. mümkünse dışarda bir yere alın

* class larda private kullanmak her zaman daha hızlıdır

* deformasyona uğramayacak bitmapler için bitmap caching performansı arttrır

* device fonts anti alias seçeneklerine göre daha performanslıdır.

vs.. aklıma gelenler bunlar şimdilik.
perplex şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Sponsorlu Bağlantılar
Zoque.Forum
Reklam
Yanıt

Etiketler

actionscript , adobe , as3 , flash , performans


 
Zoque'a hoşgeldiniz!
Zoque 27.02.1999 tarihinde yayın hayatına başlamış, paylaşıma dayalı bir oluşumdur. Tasarım, teknoloji, web, kültür ve sanat ana başlıkları altında bilgi paylaşımı ve benzer değerlere sahip katılımcıların birbirleriyle iletişime girmelerine imkan sağlar. "Az ama Öz" sloganından yola çıkarak, kaliteli ve nitelikli katılımı temel alır.

Saygın ve ciddi bir ortamda yardımlaşmak, haberleşmek, kendi bildiklerini diğer katılımcılarla paylaşmak isteyen, oluşumumuza düzenli katılımda bulunacağı inancını taşıyan konuklarımızı üye olmaya davet ediyoruz. [ » ]


Üye Girişi:

En popüler ilk 100 etiket
Tag Cloud
acil adsl ajax almak arama araniyor ariyorum ariyoruz asp bilen bilgi bilgisayar blog calisma canon css dijital div domain dosya eleman film firefox flash font form forum fotograf freelance google gore grafik grafiker hakkinda hangi hata hatasi hosting html ilgili ilk image internet istanbul istiyorum java javascript karakter kayit kisisel kullanimi link logo mac mail menu muzik mysql nasil neden nedir online photoshop php problemi program programi reklam resim satilik sayfa script server ses sistemi site sitesi son soru sorun sorunsali sorunu sql swf tasarim tasarimci tasarimcisi tasarimi turk turkce veri video web windows wordpress xml yardim yazi yeni zoque
Zoque RSS Aboneliği
Son eklenen konuları e-posta ile haber verelim mi?

Forum Yazılımı: vBulletin® Version 3.7.4 Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

Arayüz/Skin "Güneş" © www.zoque.com / net. Copyright © 1999 - 2008
Forum Saati GMT +2. Şu anda saat: 10:39.