Question

(Flash Professional, AS3)

Je travaille sur un système d'avatar personnalisé où vous pouvez sélectionner différents Festures et couleurs. Par exemple, j'ai movieclip « cheveux » qui a 10 coiffures. Chaque cadre a une movieclip d'une coiffure différente (HairStyle1, HairStyle2, etc.). J'ai aussi un Colorpicker pour changer la couleur.

Voici mon code:

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

Cela change correctement la couleur initiale. J'ai un bouton « nextHair » à l'avance mc_myAvatar.hair à l'image suivante. Lorsque je clique sur le bouton, je reçois un message d'erreur disant que j'ai une référence d'objet nul. J'ai ajouté une trace, et mc_myAvatar.hair.colorLayer est nulle sur l'image 2. Pourquoi ??? Je l'ai clairement nommé HairStyle2 comme "colorLayer" dans le cadre 2.

Je pense que le problème est lié à moi en utilisant le même nom pour différentes classes / MovieClips, mais je ne sais pas comment résoudre le problème ...

J'ai ajouté un MovieClip carré ci-dessous mon COIFFURE MovieClips, du nom de la place « colorLevel », et supprimé le nom de mes clips COIFFURE. Lorsque je clique sur le bouton suivant, la place maintient correctement la couleur du cadre au cadre. Cependant, ayant un carré ne me fait pas beaucoup de bien. : (

I essayé convertir la couche de coiffure à un masque. Faire cela, cependant, les résultats dans une autre erreur « objet null » - mc_myAvatar.hair.colorLayer est nul après l'image 1. J'ai même essayé « couvrant » mon colorLevel sur toutes les images (sans images clés), pensant que cela me donnerait juste un MovieClip à travailler avec. Pas de chance. même erreur!

Qu'est-ce qui se passe, ici? Pourquoi suis-je recevoir ces objets nuls, quand ils sont clairement définis dans mon MovieClip?

Je suis aussi ouvert aux suggestions sur une meilleure façon de faire plusieurs cadres et les couleurs.

Était-ce utile?

La solution

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

Je l'ai testé, content.products est nulle dans miClick, cependant, hdExitFrame, il n'a pas été. Espérons que cela aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top