Bug sur fondu movie clip

missopium Messages postés 18 Date d'inscription dimanche 3 juin 2007 Statut Membre Dernière intervention 17 mai 2008 - 29 août 2007 à 22:59
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 - 31 août 2007 à 13:08
bonsoir
voila mon souci j ai un bug sur un menu que je suis en train de concevoir
au passage de la souris sur mes logos l intitulé s affiche en fondu (roll over , roll out)
j ai utilisé cette synthaxe

studtxt_mc._alpha = 0;
    studtxt2_btn._visible = false;
   
    stud_btn.onRollOver = function(){
        var alpha_interval:Number = setInterval(fadeImage, 50, studtxt_mc);
function fadeImage(target_mc:MovieClip):Void {
    target_mc._alpha += 20;
   
    if (target_mc._alpha >= 100) {
           clearInterval(alpha_interval);}
          
    }
}
   
        stud_btn.onRollOut = function(){
            var alpha_interval:Number = setInterval(fadeImage,50, studtxt_mc);
function fadeImage(target_mc:MovieClip):Void {
    target_mc._alpha -= 20;
    if (target_mc._alpha <= 0) {
           clearInterval(alpha_interval);}
            }
  }

cela marche bien mais des que j accelere le passage de la souris les fondus ne fonctionnent pas jusqu au bout ... si quelqu un pouvait m aider

3 réponses

cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
30 août 2007 à 11:13
faut ajouter un test pour savoir l'état de la variable alpha_interval, si elle est définie, tu fais rien, sinon tu lances ton setInterval.

@+
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
31 août 2007 à 12:26
Bonjour,

Je suis pas sur que la méthode de goldenboy68 fonctionne car alpha_interval est défini une fois dans chaque fonction hors, normalement la portée d"une variable se limite à la fonction qui la contient.

Selon moi, ce qui se passe lorsque tu vas vite c'est que les 2 fonctions fadeImage s'annulent. C'est adire :

lors du rollOver target_mc._alpha += 20 et le rollOut (l'interval) est lancé AVANT le  clearInterval(alpha_interval) du rollOver,
donc, a chaque interval on à target_mc._alpha += 20 (rollOver) et target_mc._alpha -= 20 (rollOut) donc l'alpha ne bouge plus.

A mon sens il faudrait sortir la fonction fadeImage des rollOver / rollOut et avoir une variable fadeDirection

un truc du style

studtxt_mc._alpha = 0;
studtxt2_btn._visible = false;
 
var alpha_interval:Number=null
var fadeDirection:Number=1

function startFader(direction){
 fadeDirection=direction
 if (alpha_interval==null){
  alpha_interval=setInterval(fadeImage, 50, studtxt_mc);
 }
}
  
function fadeImage(target_mc:MovieClip):Void {
 target_mc._alpha += (20*fadeDirection);
 if (target_mc._alpha <=0 || target_mc._alpha >= 100) {
           clearInterval(alpha_interval);
 }        
}
   
stud_btn.onRollOver = startFader(1)
stud_btn.onRollOut = startFader(-1)

@+
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
31 août 2007 à 13:08
pour conserver la structure du code, on peut faire passer la variable locale sur le clip parent et on n'a plus de problème de portée.

Sinon, c'est plus propre codé comme Girou, dsl j'avais pas le courage de refaire tout ça à ma première réponse.
0
Rejoignez-nous