Domanda

Sto creando una sottoclasse MovieClip (chiamiamolo MyClip) che voglio utilizzare per diversi elementi di una libreria. Sarò un'istanza di questi filmati dal codice ActionScript. MyClip ha un parametro costruttore che permette di impostare i valori iniziali di alcune proprietà.

Dal momento che voglio usarlo per più elementi di una libreria, la via più logica da fare sembra di specificarlo nella casella di testo "Base Class" nella finestra "Proprietà simbolo". Il problema è che le sottoclassi auto-generati non hanno il costruttore con il parametro. Invece, Flash tenta di generare loro con un costruttore di default solo, che non riesce anche perché MyClip non ha un costruttore di default.

C'è un modo per aggirare questo, oltre a rinviare l'inizializzazione immobile ad un metodo normale?

Modifica non sono stato abbastanza chiaro, cercherò di chiarire qui. Se questa è la classe MyClip:

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

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

e ho specificato MyClip come classe base per il simbolo MyClipA nella libreria, Vorrei idealmente piace essere in grado di fare clip = new MyClipA(17); senza dover scrivere la classe MyClipA me stesso.

È stato utile?

Soluzione

Sto assumendo la ragione è necessario creare MyClipA e MYClipB, ecc classi è quello di collegare l'arte diverso da oggetti che hanno solo i comportamenti di un oggetto MyClip?

Forse si potrebbe avvicinarsi in modo diverso, rendere la vostra classe di base - MyClip come lo avete il vostro esempio, accettare 2 aruguments, uno dei quali è un riferimento all'arte:

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);
    }
}

E si potrebbe definire quant'altro è necessario in un ArtBaseClass che viene applicata a ciascuno di questi oggetti della biblioteca d'arte.

Altri suggerimenti

Non credo che possa davvero essere fatto. Ma se si può fare, sarà correttamente con il prototipo. Forse è possibile modificare il contructor di ciascuna delle classi di default.

Prova a specificare gli argomenti di default per il costruttore (null come un valore speciale, forse?). Quindi aggiungere un po 'di controllo degli errori all'inizio del costruttore che imposta default sensibili per il vostro MovieClip. E 'davvero hacky, ma per quanto ne so, non c'è un modo migliore per farlo utilizzando il drag & drop animare interfaccia utente (è possibile farlo solo con il codice).

Se sono imbattuto in questo pure. Il modo corretto per risolverlo è quello di creare classi per MyClipA e MyClipB che ereditano da MyClip. Questo può essere scomodo se ci sono molte classi che si basano su MyClip. Poi di nuovo, se questo è il caso in cui si potrebbe desiderare di iniziare a pensare di utilizzare la composizione, invece di eredità in ogni caso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top