30.07.2012 Aufrufe

Leistungsoptimierung für die ADOBE FLASH-PLATTFORM

Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM

Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!