Ich habe versucht, den Code, den ich oft verwende, zu verbessern, und habe mich gefragt, ob es einen einfachen Weg dafür gibt.AS3 - Objekte dynamisch initialisieren
Ich habe eine Navigationsklasse, die die Objekte vor dem Konstruktor definiert (private var exampleScreen: ExampleScreen;).
Basierend auf einer String-Abhängigkeitsinjektion für eine ChangeScreenTo-Funktion (destinationScreen: String), ist es möglich, den definierten Bildschirm zu greifen und ihn dynamisch zu initialisieren (exampleScreen = new ExampleScreen();)? Wie auch immer, hat jemand bessere Vorschläge als diese oder meine aktuelle Lösung einer Switch-Anweisung?
Beispielcode:
package{
public class ScreenController extends MovieClip {
private var currentScreen: DisplayObject;
//SCREENS
private var exampleScreen1:ExampleScreen1;
private var exampleScreen2:ExampleScreen2;
...
public function ScreenController() {
...
}
public function ChangeScreenTo(desinationScreenName: String) {
//REMOVE CURRENT SCREEN
if (currentScreen != null) {
removeChild(currentScreen);
currentScreen = null;
}
switch (destinationScreenName) {
case "exampleScreen1":
exampleScreen1 = new ExampleScreen1();
break;
case "exampleScreen2":
exampleScreen2 = new ExampleScreen2();
break;
...
}
mcDestinationScreen = this[(destinationScreenName)];
addChild(mcDestinationScreen);
currentScreen = mcDestinationScreen;
}
}
}
Vielleicht hat jemand kann Ihnen helfen, aber das ist zu abstrakt für mich. Veröffentlichen Sie formatierten Code in einem Block, damit ich Ihre aktuelle Implementierung sehen kann. –
Sie müssen also eine bestimmte Klasse instanziieren, je nach dem Wert der Zeichenfolge? Alles, was mit dem Ausblenden anderer (zuvor geöffneter) Bildschirme zu tun hat? – www0z0k
Code zu Frage hinzugefügt. –