Leistungsoptimierung für die ADOBE FLASH-PLATTFORM
Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM
Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
LEISTUNGSOPTIMIERUNG FÜR DIE <strong>FLASH</strong>-<strong>PLATTFORM</strong><br />
Renderleistung<br />
Die Math.abs()-Funktion könnte hier inline platziert werden, um <strong>die</strong> Anzahl der Funktionsaufrufe zu verringern<br />
und weitere Leistungsvorteile zu erzielen. Es empfiehlt sich, den int-Datentyp <strong>für</strong> <strong>die</strong> Eigenschaften destX und destY<br />
zu verwenden, damit Festkommawerte entstehen. Durch Verwendung des int-Datentyps erzielen Sie eine perfekte<br />
Pixelausrichtung, ohne dass Werte mithilfe von langsamen Methoden wie Math.ceil() oder Math.round() manuell<br />
gerundet werden müssen. Dieser Code rundet <strong>die</strong> Koordinaten nicht in den int-Datentyp, da durch eine<br />
kontinuierliche Rundung der Werte keine gleichmäßige Bewegung des Objekts entsteht. Das Objekt kann sich<br />
ruckartig bewegen, da <strong>die</strong> Koordinaten in jedem Bild an <strong>die</strong> nächsten gerundeten Ganzzahlen ausgerichtet werden.<br />
Diese Technik kann jedoch nützlich sein, um <strong>die</strong> endgültige Position eines Anzeigeobjekts festzulegen. Der folgende<br />
Code sollte nicht verwendet werden:<br />
// Do not use this code<br />
var destX:Number = Math.round ( stage.stageWidth / 2 );<br />
var destY:Number = Math.round ( stage.stageHeight / 2);<br />
Der folgende Code ist wesentlich schneller:<br />
var destX:int = stage.stageWidth / 2;<br />
var destY:int = stage.stageHeight / 2;<br />
Der vorherige Code kann noch weiter optimiert werden, indem Operatoren zur bitweisen Verschiebung verwendet<br />
werden, um <strong>die</strong> Werte zu teilen:<br />
var destX:int = stage.stageWidth >> 1;<br />
var destY:int = stage.stageHeight >> 1;<br />
Dank der Bitmap-Zwischenspeicherung kann <strong>die</strong> Laufzeitumgebung Objekte mithilfe von dynamischen Bitmaps<br />
einfacher rendern. Im aktuellen Beispiel wird der Movieclip, der das TextField-Objekt enthält, im Cache<br />
zwischengespeichert.<br />
wait_mc.cacheAsBitmap = true;<br />
Eine weitere Leistungssteigerung lässt sich erzielen, indem <strong>die</strong> Alphatransparenz entfernt wird. Alphatransparenz<br />
belastet <strong>die</strong> Laufzeitumgebung zusätzlich, wenn transparente Bitmapbilder gezeichnet werden wie im vorherigen<br />
Codebeispiel. Sie können <strong>die</strong>s vermeiden, indem Sie <strong>die</strong> opaqueBackground-Eigenschaft verwenden und eine<br />
Hintergrundfarbe angeben.<br />
Bei Verwendung der opaqueBackground-Eigenschaft belegt <strong>die</strong> im Arbeitsspeicher erstellte Bitmapoberfläche immer<br />
noch 32 Bit. Der Alphaversatz ist jedoch auf 255 eingestellt und es wird keine Transparenz verwendet. Deshalb<br />
verringert <strong>die</strong> opaqueBackground-Eigenschaft zwar nicht <strong>die</strong> Arbeitsspeicherbelastung, aber sie verbessert <strong>die</strong><br />
Renderleistung, wenn <strong>die</strong> Bitmap-Zwischenspeicherung verwendet wird. Der folgende Code enthält alle<br />
Optimierungen:<br />
Letzte Aktualisierung 9.5.2012<br />
71