23.07.2008 - SDepthManager - AS2.0 Klasse
Nach vielen Versuchen mit der in Flash 8 eingebauten DepthManager-Klasse klar zu kommen, habe ich wie viele andere auch, etwas eigenes gebaut. Einige Tiefenverwaltungen sind ja im Netz als Prototypen oder AS 2.0-Klassen zu finden aber nichts entsprach meinen Vorstellungen.
Hier stelle ich jetzt die SDepthManager-Klasse vor, die die Tiefenverwaltung aller in einem Movie dynamisch erzeugten Clips erledigt. Beginnend mit einer Instanz in _root werden in jedem Clip eigene Instanzen von SDepthManager erzeugt, die immer sozusagen rekursiv aufgerufen werden. Der Vorteil an dieser Konstruktion ist, dass jeder 'Zweig' des MovieClips eine eigene Tiefenverwaltung hat, die trotzdem zentral angesprochen werden kann. In diesem kleinen Beispielfilm demonstriere ich die Arbeitsweise:
Instanziert wird so:
import skurrile.SDepthManager;
var dm = new SDepthManager(_root);
Die SDepthManager-Klasse:
SDepthManager-Funktion
SDepthManager(path:MovieClip)
Konstruktor der Klasse. Erstellt die Instanz der Klasse und macht den angegebenen MovieClip zur Basis.
createChildClip-Funktion
createChildClip(path:MovieClip,name:String):MovieClip
Erstellt im angegebenen MovieClip einen neuen leeren MovieClip mit dem angegebenen Namen, vergibt automatisch die nächsthöhere Tiefe und gibt einen Verweis auf den neu erzeugten Clip zurück.
createChildClassObject-Funktion
createChildClassObject(path:MovieClip,name:String,classObject:Object,initObject:Object):MovieClip
Erstellt im angegebenen MovieClip ein neues Klassenobjekt der angegebenen Klasse mit dem angegebenen Namen, vergibt automatisch die nächsthöhere Tiefe und gibt einen Verweis auf den neu erzeugten Clip zurück. Das Initialisierungsobjekt wird an die erzeugte Klasseninstanz weiter gegeben.
toTop-Funktion
toTop(clip:MovieClip):Void
Setzt den angegebenen Clip in der Hierachie ganz nach oben. Der ursprünglich oberste Clip tauscht seinen Platz.
removeMovieClip-Funktion
removeMovieClip(clip:MovieClip):Boolean
Löscht den angegebenen Clip aus der Hierachie. Löscht auch ohne Nachfrage alle enthaltenen Clips und deren SDepthManager. Bei Erfolg gibt die Funktion true zurück.
dCursor-Funktion
dCursor():Number
Gibt die voreingestellte Tiefe für einen benutzerdefienierten Cursor-Clip zurück. dCursor sollte immer die höchstmögliche Ebene für MovieClips erhalten, damit der Cursor immer im Vordergrund liegt.
dTooltip-Funktion
dTooltip():Number
Gibt die voreingestellte Tiefe für einen benutzerdefienierten Tooltip-Clip zurück. Die Tiefe liegt eine Stufe unter dCursor.
traceArray-Funktion
traceArray(d:String):String
Rekursive Funktion die den ganzen MovieClip-Baum abbildet und als String zurück gibt. Parameter d ist ein Präfixzeichen um die unterschiedlichen Verzweigungen optisch besser abzugrenzen.
Alle Funktionen werden im Beispielfilm genutzt und erklären sich damit selber. Die Klasse ist leicht erweiterbar um Funktionen wie setToDepth oder attachMovie.
SDepthManager.zip 223.07 KB