[flash] Programme menu & boutons

Bonjour à tous,

J'ai (ci-dessous) un code inserré dans le calque action de mon animation. Celui-ci est censé gérer mes movieclips boutons lors du survol/clic/relachement de l'utilisateur (et notamment, lorsqu'on clic sur un bouton, tous les autres remontent). Le problème c'est que ça ne marche pas du tout ! Le curseur n'a pas du tout d'incidence sur mes boutons.

Pourriez-vous me dépanner ?

var nb:Number = 2; //nombre de boutons
for (j=1; j<=nb; j++) {
var btn:MovieClip = this["bouton"+j]; //noms des boutons
btn.id = j; // identifiant pour la suite
btn.step = 1; // 1 = normal, 2 = enfoncé
btn.onRollOver = function() {
this.gotoAndStop(2); //image bouton survolé
};
btn.onRollOut = function() {
if (this.step != 2) { //si le bouton a été cliqué, pas de "rembobinage"
this.gotoAndStop(3); //image bouton se rembobine
}
};
btn.onRelease = function() {
pom(this.id);
};
}

function pom(id) { // fonction qui relève tous les autres boutons
for (k=1; k<=nb; k++) {
var btn:MovieClip = this["monBouton"+k];
var btnCible:MovieClip = this["monBouton"+id];
btn.gotoAndStop(1);
btnCible.gotoAndStop(2);
btnCible.step = 2;
}
}

--

KowA
Configuration: Windows XP
Firefox

2 réponses

  1. Help !

    Les suggestions pour tout autre code gérant les boutons d'un menu sont les bienvenues bien sûr... Ou une correction du code précemdemment écrit...

    Merci de votre aide.
    0
    1. je veu pas dire de connerie mais la

      for (j=1; j<=nb; j++) {
      var btn:MovieClip = this["bouton"+j]; //noms des boutons

      il me semble que t'ecrase btn à chaque tour de boucle, tu devrai le stocker dans un tableau une fois que tu a declarer tous les événements d'un btn avant de continuer la boucle
      0
      1. Oui effectivement, il semblerait que j'écrase tout...

        Par contre je ne sais pas créer un tel tableau, peux-tu m'indiquer la démarche ?

        merci.
        0
      2. @KowAtout simplement tu declare le tableau avant la boucle

        var TableauDeBouton:Array = new Array();

        et pendant la boucle tu fais un

        TableauDeBouton.push(btn);
        0
      3. @MimisteOk merci bien, j'essaye ce soir ...
        0
      4. Mauvaise nouvelle... aucun changement avec la création de ce tableau.

        Ce qui me trouble c'est que les boutons (movieclips) ne sont même pas cliquables... Je dois bien les appeler bouton+1, bouton+2,..., bouton+n ? Et les 3 images n'ont pas besoin de drapeau ?

        J'ai fais une scène test juste avec mon code et deux boutons (avec nb = 2) mais sans succès. J'ai rendu le script plus clair et j'ai corrigé une erreur mais j'ai encore besoin d'aide pour le rendre fonctionnel...

        var nb:Number = 2; //nombre de boutons
        var TableauDeBouton:Array = new Array();
        for (j=1; j<=nb; j++) {
        var btn:MovieClip = this["bouton"+j]; //noms des boutons
        btn.id = j; // identifiant pour la suite
        btn.step = 1; // 2 = enfoncé, 1 = normal
        btn.onRollOver = function() {
        this.gotoAndStop(2); //image 2 du bouton (animation survol)
        };
        btn.onRollOut = function() {
        if (this.step != 2) { //si le bouton a été cliqué, pas de "rembobinage"
        this.gotoAndStop(3); //image 3 du bouton (retour apparence normale)
        }
        };
        btn.onRelease = function() {
        pom(this.id);
        };
        TableauDeBouton.push(btn);
        }

        function pom(id) { // fonction qui relève tous les boutons sauf celui cliqué
        for (k=1; k<=nb; k++) {
        var btn:MovieClip = this["bouton"+k];
        var btnCible:MovieClip = this["bouton"+id];
        btn.gotoAndStop(1); //image 1 du bouton : apparence normale
        btnCible.gotoAndStop(2); //image 4 du bouton : apparence cliqué
        btnCible.step = 2;
        }
        }

        0