Frage

Ich erstelle eine MovieClip- Unterklasse (nennen wir es MyClip), dass ich für mehrere Bibliothekselemente verwenden möchten. Ich werde diese Filmclips von Actionscript-Code wird instanziieren. MyClip hat einen Konstruktor Parameter, der es die Anfangswerte bestimmter Eigenschaften festlegen können.

Da ich es für mehrere Bibliothekselemente verwenden mag, die logische Art und Weise zu tun, es in dem „Basisklasse“ Textfeld in dem „Symboleigenschaften“ Dialog näher zu spezifizieren scheint. Das Problem ist, dass die automatisch generierten Subklassen haben nicht den Konstruktor mit dem Parameter. Stattdessen versucht Flash-sie mit einem Standard-Konstruktor nur zu erzeugen, die nicht auch, weil MyClip keinen Default-Konstruktor hat.

Gibt es eine Möglichkeit, um diesen, abgesehen von Aufschieben Eigenschaft Initialisierung zu einem normalen Verfahren?

Edit: Ich habe nicht klar genug gewesen, ich werde versuchen, hier zu klären. Ist dies die MyClip Klasse:

public class MyClip extends MovieClip
{
    private var someValue : Number;

    public function MyClip(someValue : Number)
    {
        this.someValue = someValue;
    }
}

und I angegebene MyClip als Basisklasse für Symbol MyClipA in der Bibliothek, ich würde im Idealfall in der Lage sein mag clip = new MyClipA(17); zu tun, ohne die MyClipA Klasse selbst zu schreiben.

War es hilfreich?

Lösung

Ich gehe davon aus, den Grund Sie MyClipA und MYClipB erstellen müssen, etc Klassen verschiedene Kunst-Objekte zu befestigen, die nur das Verhalten eines myClip bezwecken?

Vielleicht könnte man es anders angehen, Ihre Basisklasse machen - myClip, wie Sie es Ihrem Beispiel haben, akzeptieren 2 aruguments, von denen ein Verweis auf die Kunst ist:

public class MyClip extends MovieClip
{
    public var art:ArtBaseClass
    private var someValue : Number;

    public function MyClip(someValue : Number, artClass:ArtBaseClass)
    {
        this.someValue = someValue;
        this.art = new artClass();
        this.addChild(art);
    }
}

Und man könnte definieren, was Sie sonst in einem ArtBaseClass müssen, die jede dieser Kunstbibliothek Objekte angewendet wird.

Andere Tipps

Ich glaube nicht, es wirklich getan werden kann. Aber wenn es getan werden kann, wird es richtig mit dem Prototyp sein. Vielleicht können Sie den contructor jeder der Standardklassen ändern.

Versuchen Standardargumente für den Konstruktor spezifiziert (null als besonderen Wert, vielleicht?). Dann fügen Sie am Anfang des Konstruktors ein wenig Fehlerprüfung, die sinnvolle Standardwerte für Ihre MovieClip- setzt. Es ist wirklich hacky, aber soweit ich weiß, gibt es keine bessere Möglichkeit, es mit der Drag & Drop zu tun UI Animieren (Sie können es durch Code tun).

Wenn auch in dieser läuft. Der richtige Weg, es zu lösen, ist Klassen für MyClipA und MyClipB zu erstellen, die von myClip erben. Dies kann umständlich sein, wenn es viele Klassen, die auf myClip basieren. Dann wieder, wenn das der Fall ist, möchten Sie vielleicht denken beginnen über die Verwendung von Zusammensetzung statt Vererbung sowieso.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top