Bonjour à tous,
Je fais une anim composer de neuf menus qui ouvrent neuf clips, sachant qu'avant d'ouvrir le clip demandé, le clip en cours se termine.
Jusque là tout va bien.
Le seul problème, c'est que je veux que le premier clip se lance tout seul, sans le bouton (ça, ça marche), mais du coup quand je lance un autre clip, le premier clip ne finit pas son anim...
Une fois que j'ai fait mon premier clique (sur nimporte quel bouton), tout marche à merveille, mais pas avant ce fameux premier clique...
Voici le code :
stop();
//pour retenir le clip en cours de lecture
var currentClip:MovieClip;
//un tableau contenant tous les clips
var tabloClips:Array = new Array(Clip1,Clip2,Clip3,Clip4,Clip5,Clip6,Clip7,Clip8,Clip9);
//un tableau contenant tous les boutons
var tabloBoutons:Array = new Array(btn_1,btn_2,btn_3,btn_4,btn_5,btn_6,btn_7,btn_8,btn_9);
/**
* on initialise l'état des clips
* et on attribue les actions de boutons
*/
function initClipState():Void{
var nb:Number = tabloClips.length;
for (var i=0;i<nb;i++){
Clip1._visible=false;
Clip2._visible=false;
Clip3._visible=false;
Clip4._visible=false;
Clip5._visible=false;
Clip6._visible=false;
Clip7._visible=false;
Clip8._visible=false;
tabloBoutons[i].id = i;// on attribue un id au bouton pour s'en servir dans les actions onRelease
tabloBoutons[i].onRelease = function() {
trace(this.id);// ici si j'avais mis i, on aurait eu tout le temps la valeur de nb, c'est à dire 6
checkNext(tabloClips[this.id],this.id+1);//ici on lance la fonction de switchage checkNext();
}
}
}
initClipState();//larguer l'init ;-)
/**
* vérifie la position de la tête de lecture des clips et agit en fonction
*/
function checkNext(nextClip:MovieClip,nextIndex:Number):Void{
// pour le tout premier click
if(currentClip == undefined){
nextClip._visible=true;
currentClip=nextClip;
currentClip.play();
}
if(currentClip != nextClip){// si le clip courant n'est pas le clip appelé
currentClip.onEnterFrame = function(){
trace(currentClip);
if(currentClip._currentframe == 10){
currentClip.play();
}else if(currentClip._currentframe == 20){
delete currentClip.onEnterFrame;
currentClip._visible=false;
currentClip.gotoAndStop(1);
tabloClips[nextIndex-1]._visible=true;
tabloClips[nextIndex-1].play();
currentClip = nextClip;
}
}
}
}
C'est un peu long, et peut-être pas super coder mais ça marche (euh, sauf pour le premier clique
)
Voila, merci d'avance à ceux qui se pencheront sur le problème ! :)
a2line