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.