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