Problème de profondeur

irongaordon - 23 août 2012 à 14:17
 irongaordon - 24 août 2012 à 08:57
Bonjour à tous,

Je crée actuellement un calendrier en AS3 sous CS5. Celui-ci se compose de clips placés sur la scène. Lors d'un rollover un nouveau clip apparaît (il était alors en visible=false) pour donner davantage d'informations sur l'élément survolé. Ayant de nombreux éléments, avec le code de base le rollover est positionné sous les clips "normal" avoisinants.

Pour remédier j'ai ajouté cette ligne :
setChildIndex(me.target as DisplayObject, numChildren-1);

Après cela mon rollover se positionne à la bonne hauteur, c'est à dire tout au dessus pour être visible. Le problème est qu'après avoir modifié la profondeur de mon rollover, le clip "normal" reste présent partout même lorsque je change de frame. J'ai remarqué que peu importe la modification de profondeur que j'apportais, l'élément modifié restait présent sur toutes mes frames.

J'aimerais donc savoir comment résoudre ce problème sachant que j'ai presque fini ce projet et que je bloque ce point depuis déjà pas mal de temps.

Merci à vous.

4 réponses

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
23 août 2012 à 14:35
Bonjour;

Pour retirer un DisplayObject d'une liste d'affichage, il faut utiliser la méthode "removeChild()".

Peg'
0
Mes clips sont placés sur la scène et non pas appelés dynamiquement via un addChilld. Ce que je ne comprends pas c'est pourquoi lorsque je modifie la profondeur d'un élément, un rollover avec les numChildren-1 ou même modifier la profondeur de mon jpeg qui me sert de calendrier, cela me met le clip modifié de partout, sur les autres frames j'entends.
De base mon application fonctionne bien, les éléments sont présents. Lorsque je change de frame, le contenu de celle-ci s'affiche sans autres éléments intrus. Mais dés que j'active un rollover, le clip "normal" (celui que l'on survole) reste afficher de partout.
Lors de l'appel de ma fonction qui écoute le rollout, le fait de changer la profondeur pour le mettre à un niveau moins élevé ne change rien, l'élément reste toujours présent.
J'ai étudié les différentes fonctions pour modifier la profondeur (swapChildren, setIndexChild...) mais rien ne va.
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
23 août 2012 à 22:00
Tout simplement parceque de statique, il passe à dynamique et donc n'appartiens plus aux éléments de frame (les frames et calques n'ont de raison d'exister que pour les animations pures...)
Essaie alors de le masquer à l'aide de la propriété "visible".

Peg'
0
En fait j'ai un clip où sont imbriqués deux clips:
-normal : qui correspond à l'état de base, que je masque lors d'un rollover et que je rends visible après le rollout.
-haut : c'est l'état de rollover que l'on passe en visible lorsque l'on survole le clip "normal"

Lors du survol:

function qdSurvole(me:MouseEvent) {
var leClip = MovieClip(me.currentTarget);
leClip.normal.visible = false;
leClip.haut.visible = true;
trace(getChildIndex(leClip));
setChildIndex(me.target as DisplayObject, numChildren-1);
}


En plaçant des trace je constate que le numChildren-1 ne s'applique pas seulement au clip "haut" mais également à "normal". Du coup, "normal" devient dynamique et reste présent sur toutes les frames.

Comment pourrais-je indiquer que je veux placer uniquement le rollover ("haut") tout en haut sans toucher à "normal" ?
0
Rejoignez-nous