Domanda

(Flash Professional, AS3)

Sto lavorando su un sistema di avatar personalizzato in cui è possibile selezionare varie festures e colori. Per esempio, ho un movieclip "capelli" che ha 10 acconciature. Ciascun telaio ha un movieclip di un'acconciatura diversa (HairStyle1, HairStyle2, ecc). Ho anche un colorpicker per cambiare il colore.

Ecco il mio codice:

var hairColor:ColorTransform;
hairColor = mc_myAvatar.hair.colorLayer.transform.colorTransform; 
hairColor.color = 0xCCCC00; 
mc_myAvatar.hair.colorLayer.transform.colorTransform = hairColor;

Questo cambia correttamente il colore iniziale. Ho un pulsante "nextHair" per anticipo mc_myAvatar.hair al fotogramma successivo. Quando clicco sul pulsante, ricevo un messaggio di errore dicendo che ho un riferimento oggetto null. Ho aggiunto una traccia, e mc_myAvatar.hair.colorLayer è nullo sul telaio 2. Perché ??? Ho chiaramente chiamato HairStyle2 come "colorLayer" in frame 2.

Credo che il problema è legato a me con lo stesso nome per diverse classi / movieclips, ma non so come risolvere il problema ...

ho aggiunto un movieclip piazza sottostante miei movieclips taglio di capelli, dal nome della piazza "colorLevel", e cancellato il nome dai miei clip acconciatura. Quando clicco sul pulsante Avanti, la piazza mantiene correttamente il colore da un fotogramma all'altro. Tuttavia, avendo un quadrato non fa di me molto bene. : (

Ho provato a convertire lo strato di acconciatura di una maschera. In questo modo, però, si traduce in un altro errore "oggetto nullo" - mc_myAvatar.hair.colorLayer è nullo dopo fotogramma 1. Ho anche provato "si estende" il mio colorLevel tutti i fotogrammi (fotogrammi chiave), pensando che questo mi avrebbe dato un solo movieclip con cui lavorare. Senza fortuna. Stesso errore!

Che cosa sta succedendo, qui? Perché ricevo questi oggetti nulli, quando sono chiaramente definiti nel mio movieclip?

Sono anche aperti a suggerimenti su un modo migliore per fare più fotogrammi e colori.

È stato utile?

Soluzione

function miClick(e:MouseEvent) {
    content.gotoAndStop(e.currentTarget.parent.name);

    if(e.currentTarget.parent.name == "2") {
        content.addEventListener(Event.EXIT_FRAME, this.hdExitFrame);
        productMenu.alpha = 1;
        trace(content.products);
    } else {
        productMenu.alpha = 0;
    }
}

function hdExitFrame(e:Event) {
    trace(e.target.currentFrame + ", " + e.target.products);
    content.removeEventListener(Event.EXIT_FRAME, this.hdExitFrame);
}

Ho provato questo, content.products è nullo in miClick, tuttavia, nel hdExitFrame, non lo era. Spero che questo aiuti.

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