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 />

Einsparen von Arbeitsspeicher<br />

package<br />

{<br />

import flash.display.Sprite;<br />

}<br />

public final class SpritePool<br />

{<br />

private static var MAX_VALUE:uint;<br />

private static var GROWTH_VALUE:uint;<br />

private static var counter:uint;<br />

private static var pool:Vector.;<br />

private static var currentSprite:Sprite;<br />

}<br />

public static function initialize( maxPoolSize:uint, growthValue:uint ):void<br />

{<br />

MAX_VALUE = maxPoolSize;<br />

GROWTH_VALUE = growthValue;<br />

counter = maxPoolSize;<br />

}<br />

var i:uint = maxPoolSize;<br />

pool = new Vector.(MAX_VALUE);<br />

while( --i > -1 )<br />

pool[i] = new Sprite();<br />

public static function getSprite():Sprite<br />

{<br />

if ( counter > 0 )<br />

return currentSprite = pool[--counter];<br />

}<br />

var i:uint = GROWTH_VALUE;<br />

while( --i > -1 )<br />

pool.unshift ( new Sprite() );<br />

counter = GROWTH_VALUE;<br />

return getSprite();<br />

public static function disposeSprite(disposedSprite:Sprite):void<br />

{<br />

pool[counter++] = disposedSprite;<br />

}<br />

Die SpritePool-Klasse erstellt bei der Initialisierung der Anwendung einen Pool mit neuen Objekten. Die<br />

getSprite()-Methode gibt Instanzen <strong>die</strong>ser Objekte zurück und <strong>die</strong> disposeSprite()-Methode gibt sie frei. Der<br />

Code bietet dem Pool <strong>die</strong> Möglichkeit, bei Bedarf zu wachsen. Es ist auch möglich, einen Pool mit einer festen Größe<br />

zu erstellen; in <strong>die</strong>sem Fall werden keine neuen Objekte zugewiesen, wenn der Pool erschöpft ist. Vermeiden Sie nach<br />

Möglichkeit, neue Objekte in Schleifen zu erstellen. Weitere Informationen finden Sie unter „Freigeben von<br />

Arbeitsspeicher“ auf Seite 12. Im folgenden Code wird <strong>die</strong> SpritePool-Klasse zum Abrufen neuer Instanzen verwendet:<br />

Letzte Aktualisierung 9.5.2012<br />

11

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!