Die übergabe von Parametern an den Konstruktor für ein AS3 automatisch erstellten asset-Klasse
Ich bin erstellen Sie ein MovieClip-Unterklasse (nennen wir es MyClip
), dass ich verwenden möchten, für mehrere Bibliothekselemente. Ich werde die Instanziierung dieser Film clips von ActionScript-code. MyClip
hat einen Konstruktor-parameter, der es ermöglicht, die ursprünglichen Werte bestimmter Eigenschaften.
Da möchte ich es für mehrere Bibliothekselemente, ist der logische Weg, es zu tun scheint, geben Sie es in die "Basis-Klasse" Textfeld in der "Symbol-Eigenschaften" - dialog. Das problem ist, dass die automatisch generierten Unterklassen nicht über den Konstruktor mit dem parameter. Stattdessen versucht Flash zu generieren, mit einem default-Konstruktor wird nur, was auch fehlschlägt, weil MyClip
keine Standard-Konstruktor.
Gibt es eine Möglichkeit, um dieses, abgesehen von zurückstellen der Eigenschaft Initialisierung einer normalen Methode?
Edit: ich nicht klar genug, ich werde versuchen das zu klären hier. Wenn dies der MyClip
Klasse:
public class MyClip extends MovieClip
{
private var someValue : Number;
public function MyClip(someValue : Number)
{
this.someValue = someValue;
}
}
und ich angegeben MyClip
als Basisklasse für ein symbol MyClipA in der Bibliothek, ich würde am Liebsten in der Lage sein zu tun clip = new MyClipA(17);
ohne zu schreiben, die MyClipA
Klasse selbst.
- Hast du eine Lösung finden?
- NÖ. Es gibt wirklich keinen Weg, dies zu tun. Wenn dies ist eine situation, die Sie gegenüberstellen, dann Ihre beste Wette ist, um zu verschieben die Initialisierung einer normalen Methode oder die Umstrukturierung Klassen, wie quoo unten vorgeschlagen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gehe davon aus, dass der Grund, warum Sie brauchen, zu erstellen MyClipA und MYClipB, etc-Klassen, ist die Verknüpfung verschiedener Kunst-Objekte, dass nur noch die Verhaltensweisen des MyClip-Objekt?
Vielleicht könnte man es anders Herangehen, machen Sie Ihre base-class - MyClip, wie Sie es Ihrem Beispiel, akzeptieren 2 aruguments, von denen ein Verweis auf die Kunst:
Und Sie könnten definieren, was Sie sonst noch brauchen, in einem ArtBaseClass, die ist angewendet auf die einzelnen diese art library-Objekte.
Glaube ich nicht, es kann wirklich getan werden.
Aber wenn es getan werden kann, wird es richtig sein, mit dem Prototyp. Vielleicht können Sie ändern Sie den contructor jeder von den Standard-Klassen.
Versuchen Sie, die Angabe von default-Argumente für den Konstruktor (
null
als einen besonderen Wert, vielleicht?). Dann fügen Sie ein wenig Fehlerüberprüfung am Anfang der Konstruktor, setzt sinnvolle defaults für deinen MovieClip. Es ist wirklich hacky, aber soweit ich weiß, gibt es nicht einen besseren Weg, es zu tun mit der drag & drop animieren UI (Sie können nur tun es durch code).Wenn ran in diesem als auch. Der richtige Weg, es zu lösen, ist das erstellen von Klassen für MyClipA und MyClipB, dass Erben von MyClip. Dies kann umständlich sein, wenn es gibt eine Menge von Klassen, basierend auf MyClip. Dann wieder, wenn das der Fall ist, möchten Sie vielleicht zu starten, denken über die Verwendung von Komposition statt Vererbung sowieso.