Forums Développement Multimédia

Aller au contenu

- - - - -

Problème setChildIndex

CODE AS3

7 réponses à ce sujet

#1 Laura

  • Guests

Posté 08 June 2014 - 11:24 AM

Bonjour,

Voici en deux mots ce que j'essaie de faire:
J'ai une navigation composée de carrés de couleur tous collés les uns aux autres. Au survol, le but est qu'ils s'agrandissent, en passant un peu sur les autres avec du texte qui s'affiche à l'intérieur.
Le problème bien sûr, c'est que au survol, chacun de ces carrés doit se mettre au premier plan, et au Mouse out devrait reprendre son état initial.

Avec le code setChildIndex et un current target (il y a 11 carrés à coder):

carre_violet.addEventListener(MouseEvent.MOUSE_OVER, survolnavig)
carre_bleu.addEventListener(MouseEvent.MOUSE_OVER, survolnavig)
carre_vertfonce.addEventListener(MouseEvent.MOUSE_OVER, survolnavig)
carre_fonce.addEventListener(MouseEvent.MOUSE_OVER, survolnavig)
carre_rougefonce.addEventListener(MouseEvent.MOUSE_OVER, survolnavig)
carre_rose.addEventListener(MouseEvent.MOUSE_OVER, survolnavig)
carre_jaune.addEventListener(MouseEvent.MOUSE_OVER, survolnavig)
carre_rouge.addEventListener(MouseEvent.MOUSE_OVER, survolnavig)
carre_brun.addEventListener(MouseEvent.MOUSE_OVER, survolnavig)
carre_blanc.addEventListener(MouseEvent.MOUSE_OVER, survolnavig)
carre_vert.addEventListener(MouseEvent.MOUSE_OVER, survolnavig)


function survolnavig (evt:MouseEvent) {
setChildIndex(DisplayObject(evt.currentTarget),this.numChildren-1);
evt.currentTarget.scaleX=1.5;
evt.currentTarget.scaleY=1.5;
evt.currentTarget.play(); //c'est pour le texte qui s'affiche

}


carre_violet.addEventListener(MouseEvent.MOUSE_OUT, survoloutnavig)
carre_bleu.addEventListener(MouseEvent.MOUSE_OUT, survoloutnavig)
carre_vertfonce.addEventListener(MouseEvent.MOUSE_OUT, survoloutnavig)
carre_fonce.addEventListener(MouseEvent.MOUSE_OUT, survoloutnavig)
carre_rougefonce.addEventListener(MouseEvent.MOUSE_OUT, survoloutnavig)
carre_rose.addEventListener(MouseEvent.MOUSE_OUT, survoloutnavig)
carre_jaune.addEventListener(MouseEvent.MOUSE_OUT, survoloutnavig)
carre_rouge.addEventListener(MouseEvent.MOUSE_OUT, survoloutnavig)
carre_brun.addEventListener(MouseEvent.MOUSE_OUT, survoloutnavig)
carre_blanc.addEventListener(MouseEvent.MOUSE_OUT, survoloutnavig)
carre_vert.addEventListener(MouseEvent.MOUSE_OUT, survoloutnavig)

function survoloutnavig (evt:MouseEvent) {
evt.currentTarget.scaleX=1;
evt.currentTarget.scaleY=1;
}

Ou alors en faisant une fonction mouse over et une mouse out avec un simple addChild, cela marche également sur l'écran où je me trouve.

Le problème que je rencontre, c'est qu'une fois la fonction mouse over activée une fois, ils se retrouvent au premier plan partout, même sur des écrans où ils n'existent pas.

J'ai essayé de redéfinir les plans pour chaque élément de mon interface et de faire sur les autres écrans un removeChildAt(-1), mais c'est un travail de titan et ça remet en question tout le code déjà mis en place (fonctions qui fonctionnent plus, objets nuls etc)

Donc, y a-t'il un moyen pour dire à un clip de reprendre son état initial? Ou si vous avez une autre idée, je prends tout!
C'est un travail d'examen à rendre dans les jours qui viennent alors je suis un peu désespérée! ^^"

Merci pour votre aide!

#2 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6954 messages

Posté 08 June 2014 - 13:51 PM

Salut,

Tu as essayé avec evt.target au lieu de evt.currentTarget ?
Sinon envoie un petit FLA simplifié pour montrer l'erreur et on regardera.

#3 Aruyn

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 08 June 2014 - 14:35 PM

Voilà je me suis connectée pour envoyer les fichiers.

J'ai essayé avec target et il y a un fla avec cet essai mais j'ai des erreurs.
Sinon il y a le currentTarget qui "marche", mais qui pose problème lorsqu'on retourne à l'accueil.

Merci beaucoup!

Fichier(s) joint(s)



#4 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6954 messages

Posté 08 June 2014 - 15:09 PM

Salut,

Je viens de jeter un oeil rapidement, cas typique d'une mauvaise utilisation de Flash...

Pour faire simple, la timeline de Flash (IDE) c'est fait pour faire de l'animation, pas des sites ou des applications avec des menus, etc...
Si tu essayes de mélanger utilisation de la Timeline et création de menus et divers codes, tu risque fort d'aller dans le mur, et c'est ce qui se passe avec ton code.

Voici un exemple qui utilise la bibliothèque de Flash pour ranger tes objets, et uniquement du code pour gérer toute la mécanique.
Pour bien faire, il aurait aussi fallu placer les carrés de la navigation avec du code (et pas à la main dans le clip), mais j'ai la flemme de tout refaire, à toi de gérer ça à partir de la base que je t'envoie.

Les trois objets utiles que j'utilise sont dans la bibliothèque (tout le reste a été collé dans un dossier "a ranger").
Ces trois objets sont exportés pour AS (voir Liaison AS dans la biblio) ce qui permet de les utiliser avec le code.
Tout le code se trouve sur une seule frame, la première et la seule de tout le projet.

Bon courage.

Fichier(s) joint(s)



#5 Aruyn

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 08 June 2014 - 15:16 PM

Ok... je n'en doute pas que j'en fais une très mauvaise utilisation :/

Merci énormément pour ton aide! Je vais revoir tout ça.

#6 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6954 messages

Posté 08 June 2014 - 15:19 PM

Le but est pas de critiquer, mais de te donner les bonnes bases de départ ;-)
Plus tu va avancer dans ton projet et plus tu sera confronté à ce genre de problèmes, alors autant commencer tout de suite par les bonnes pratiques (sans même encore parler de POO).

Bon courage et n'hésites pas si tu bloque.

#7 Aruyn

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 08 June 2014 - 15:23 PM

Oui oui je le sais! ^^ Je disais ça juste parce que je suis débutante et que j'ai appris les bases dans une école d'art où on nous demande de faire ce genre de choses, mais je n'ai pas appris à gérer la bibliothèque comme ça, etc.
Là je dois rendre le projet (dont plein d'autres supports) jeudi donc je n'aurai pas le temps de tout refaire bien comme tu me l'as montré, d'autant plus que ça demande des connaissances que je n'ai vraiment pas.

Donc je vais essayer, pour cette fois, de faire un petit mix comme je peux et de repartir sur de bonnes bases pour les prochains travaux!
Merci en tout cas :)

#8 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6954 messages

Posté 08 June 2014 - 16:39 PM

Salut,

Tu n'es pas la première à poser ce genre de problématique suite à un devoir ou un projet à rendre alors que le prof ne leur a pas donné les clés pour faire les choses correctement. Certes, en école d'art on ne vous apprend pas forcément à programmer, mais dans ce cas là il ne faut pas demander à ses élèves de faire des choses qui relèvent de la programmation...

Bref, j'espère que tu va quand même te débrouiller pour arriver à tes fins, n'hésites pas si tu as d'autres questions.




Répondre à ce sujet



  

1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP