Frage

(Flash Professional, As3)

Ich arbeite an einem benutzerdefinierten Avatar -System, in dem Sie verschiedene Feste und Farben auswählen können. Zum Beispiel habe ich ein "Haar" -Movieclip mit 10 Frisuren. Jeder Rahmen hat eine Bewegung einer anderen Frisur (Frisur1, Frisur2 usw.). Ich habe auch einen Colorpicker, um die Farbe zu ändern.

Hier ist mein Code:

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

Dies ändert die Anfangsfarbe korrekt. Ich habe eine "Nexthair" -Taste, um mc_myavatar.hair zum nächsten Frame zu bringen. Wenn ich auf die Schaltfläche klicke, erhalte ich eine Fehlermeldung, die besagt, dass ich eine Null -Objektreferenz habe. Ich habe eine Spur hinzugefügt, und mc_myavatar.hair.colorLayer ist null auf Rahmen 2. Warum ??? Ich habe Hairstyle2 in Rahmen 2 eindeutig als "Farbschicht" bezeichnet.

Ich denke, das Problem hängt damit zusammen, dass ich denselben Namen für verschiedene Klassen/Movieclips verwendet, aber ich weiß nicht, wie ich das Problem beheben soll ...

Ich fügte einen quadratischen Movieclip unter meine Frisur -Movieclips hinzu, namens "Colorlevel", und löschte den Namen aus meinen Frisurclips. Wenn ich auf die nächste Schaltfläche klicke, hält das Quadrat die Farbe korrekt vom Rahmen zum Rahmen. Ein Quadrat zu haben, tut mir jedoch nicht viel gut. :(

Ich habe versucht, die Frisurschicht in eine Maske umzuwandeln. Dies führt jedoch zu einem weiteren Fehler "Null -Objekt" - mc_myavatar.hair.colorlayer ist null nach rahmen 1. Ich habe sogar versucht, mein Colorlevel über alle Frames (keine Schlüsselrahmen) zu "überspannen", und dachte, dass dies mir nur eines geben würde Movieclip zum Arbeiten. Kein Glück. Gleicher Fehler!

Was ist denn hier los? Warum bekomme ich diese Null -Objekte, wenn sie klar in meinem Movieclip definiert sind?

Ich bin auch offen für Vorschläge auf eine bessere Möglichkeit, mehrere Frames und Farben zu machen.

War es hilfreich?

Lösung

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

Ich habe dies getestet, Content.Products ist null in miclick, aber in HDexitframe war dies nicht der Fall. Hoffe das hilft.

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