2009-08-26 6 views
0

Ich bin immer versucht, die Sprite-Klasse zu erweitern, nur damit mein Objekt Teil der Anzeigeliste sein kann (und auch EventDispatcher-Funktionen haben), obwohl es nichts anzuzeigen hat. Es wird jedoch Dinge angezeigt werden. Das ist praktisch, da diese enthaltenen Objekte nur auf ihren Container für den Zugriff auf die Anzeigeliste verweisen müssen.Erweitern der Sprite-Klasse für Bequemlichkeit?

Hat jemand diese Versuchung erlebt?
Es scheint, als wäre es üblich, scheint aber auch unpassend.

Gibt es erhebliche Speicherkosten, um die Sprite-Klasse unnötig zu erweitern?

Antwort

0

Warum möchten Sie, dass etwas Teil der Anzeigeliste ist? Sie sagen: Es wird jedoch Dinge enthalten, die angezeigt werden sollen.

Wenn Sie beabsichtigen, anzeigbare Objekte zu erstellen, z. tun so etwas wie:

var container:Sprite = new Sprite(); 
var image:Sprite = new some_lib_image(); 
var image2:Sprite = new some_other_lib_image(); 
container.addChild(image); 
container.addChild(image2); 
stage.addChild(container); 

Dann ist, dass völlig akzeptabel. Wenn Sie eine Klasse mit dem Namen ImageContainer erstellen möchten, die das Hinzufügen und Entfernen von Bildern verwaltet und sie anstelle von Sprite verwendet, ist das ebenfalls völlig akzeptabel. Ich würde es nicht als Versuchung bezeichnen, aber ich würde es nicht tun, es sei denn, du würdest dem obigen Code etwas Sinnvolles hinzufügen.

Gibt es erhebliche Speicherkosten, um die Sprite-Klasse unnötig zu erweitern?

Nicht besonders. Die Größe Ihrer Klasse wird im Allgemeinen einer Größe nahe sein (Sprite) + sizeof (instanceVariables []) wobei instanceVariables [] die neuen Variablen sind, die Sie in Ihrer Klasse deklarieren. Ich würde mir keine Sorgen machen. Komposition ist teurer als Vererbung; das ist unnötigerweise zu viele Behälter zu verwenden. Im allgemeinen Fall mache ich mir nie Gedanken darüber, aber wenn ich 5000 Partikel in einem Partikelsystem erzeugen würde, würde ich versuchen, jedes Partikel so einfach wie möglich zu halten.

Verwandte Themen