Combobox sous Flash 8

Kzimir

Membre expert
Club iGen
3 Mai 2001
1 218
7
Paris
Bonjour,

Nouveau pb :

Je souhaite créer un menu sous forme de liste déroulante (graphiquement qui ressemble aux menus HTML), j'utilise alors le composant Combobox de Flash 8 qui gère ça très bien normalement.

J'ai renseigné les labels et data, mais il y a du code actionscript à ajouter pour que flash interprète la fonction comme voulu.
En gros je veux qu'en arrivant sur le 1er élément de la liste déroulante on aille à la frame 2, et ainsi de suite...

Une idée ?

Merci :)
 
Alors, j'ai finit par trouver le code qui me manquait, à mettre sur l'occurence du composant combobox :

onClipEvent (enterFrame) {
if (selectedIndex == 0) {
this._parent.gotoAndStop(2);
}
if (selectedIndex == 1) {
this._parent.gotoAndStop(3);
}
if (selectedIndex == 2) {
this._parent.gotoAndStop(4);
}
if (selectedIndex == 3) {
this._parent.gotoAndStop(5);
}
}

Par contre j'ai un souci, quand je lance la preview au moment d'arriver sur la séquence en question avec le combobox, mon animation recommence depuis le début, sur la 1ere séquence... En gros je n'ai plus accès à la séquence à laquelle j'avais ajouté le combobox.
Dès que je vire le composant la page s'affiche sans problème de nouveau...

Ca se complique :)
 
Par contre j'ai un souci, quand je lance la preview au moment d'arriver sur la séquence en question avec le combobox, mon animation recommence depuis le début, sur la 1ere séquence...

C'est important de savoir que les séquences dans Flash sont bugguées, il ne faut absolument pas utiliser ces machins c'est dangereux, la preuve ! A coups de gotoAndPlay il y a moyen de s'en sortir sans. Mais il faut considérer les séquences comme le diable si tu travailles avec le scénario de Flash.
Après en ce qui concerne les composants, ceux de macromedia sont pas terribles, tôt ou tard tu feras bien les tiens ;)

Et enfin quand tu mets du code sur une occurence, essaie de ne pas mettre le code dans les actions du clip, mais plutôt sur la timeline principale en pointant ton occurence (qu'il faut nommer bien sûr), ce qui te donnera un truc genre :

Bloc de code:
this.monComboBox.onEnterFrame {
    if (selectedIndex == 0) {
        this._parent.gotoAndStop(2);
    }//etc
}

par contre ce code n'est pas du tout optimisé ! tu fais un test de selectedIndex à chaque frame alors que le composant comboBox envoie (en langage snobe on dit 'broadcast') des événements au changement... tu peux donc utiliser plutôt quelque chose de ce genre (toujours sur la timeline principale, pas dans le panneau d'actions du composant :

Bloc de code:
this.change = function(event){
    if (event.target.selectedIndex == 0) {
        this.gotoAndStop(2);
    }//etc
}
comboBox.addEventListener("change", this);