2. Performance, a grafika
• Generlanie zawsze nalezy korzystad z trybu GPU
• Elementy graficzne powinny byc bitmapami
• Grafika wektorowa, to twój wróg
• Korzystanie ze smoothing nie ma wpływu, ale po co?
• Nie używamy cacheAsBitmap
• Zamykanie grafiki nawet w duże ilosci Sprite’ów nie ma
wpływu na performance, o dziwo może ją poprawid
• Uproszczona i spłaszczona display lista
• Unikajmy tworzenia obiektów w locie
3. Współdzielenie grafiki
• Wszędzie gdzie to możliwe korzystajmy z jednej
bitmapdata
• Ogromny wpływ na performance
• Do 150 obiektów jednocześnie, w
płynnej, zindywidualizowanej animacji z użyciem
TweenMax
4. Współdzielenie animacji
„poklatkowej”
• Unikamy metody draw na rzecz copyPixel
• W przyp animacji poklatkowej, wszędzie gdzie to
możliwe korzystajmy z jednej bitmapdata i wyłącznie
w niej manipulujemy obrazem poprzez copyPixels
• Wówczas wszystkie inne elemnty współdzielące dane
BitmapData będą animowane jednocześnie
• OGROMNY wzrost prędkości
• MINUS – wszystkie elementy animują się w
jednakowym rytmie
5. Nie renderuj jeżeli nie musisz
• W przypadku gdy jakikolwiek element jest akurat poza
sceną – visible = false
• Object Pooling – nie twórz obiektów w locie!
• Nie usuwaj obiektów w locie, chyba, ze na pewno już ich
nie będziesz potrzebował
• Visible = false szybsze od removeChild();
8. Grafika wektorowa.
Tym razem przyjaciel.
public static function SpriteToBitmap(_class:*, _horizontal:Boolean =
true, _shadow:int = 0):Bitmap{
var c:*;
var bmp:Bitmap;
if(spritesArr.indexOf(_class) == -1){
generateNewBmpData();
}else{
var cn:int = spritesArr.indexOf(_class);
bmp = new Bitmap(bmDatasArr[cn]);
}
return bmp;
}
9. Grafika wektorowa.
Tym razem przyjaciel.
private static function generateNewBmpData(_class :*, _horizontal :Boolean, _shadow:int
) :void{
var rescaleR:Number = _horizontal ? RESCALE_RATIO_W: RESCALE_RATIO_H;
c = new _class();
var mat:Matrix = new Matrix()
mat.scale(rescaleR, rescaleR);
var w:Number;
var h:Number;
w = c.width*rescaleR + _shadow* rescaleR;
h = c.height*rescaleR+ _shadow* rescaleR;
var bmd:BitmapData = new BitmapData(w, h, true, 0xfff);
spritesArr.push(_class);
bmDatasArr.push(bmd);
bmd.draw(c, mat);
bmp = new Bitmap(bmd);
}
10. Inne rzeczy na które warto zwrócid uwagę.
GPU MODE
• Czas generowania
• Filtry w GPU
• Pamięd RAM