Une fonction dans un onEnterFrame qui ne fonctionne pas

cs_dav21 Messages postés 8 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 28 octobre 2008 - 24 oct. 2008 à 17:59
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 - 29 oct. 2008 à 08:27
Bonjour. Je souhaite créer un fondu sonore d'une musique qui se trouve dans un clip. Je met mon code sur la scène principale. Je souhaite que la musique s'arrête progressivement à partir d'une certaine frame. du coup, tout ça crée un truc compliqué et qui ne marche pas. Je signale que le trace ne marche pas (rien ne s'affiche, aucune fenêtre qui s'ouvre.)
Voici le code:

var vol = monSon1.getVolume();
clip1.onEnterFrame = function(){
    if(clip1._currentframe>=445){
         fadeout = function(){
            vol -=1 ;
            monSon1.setVolume(vol);
            trace(vol);
            if (vol<=0){
               clearInterval(mon_interval);
            }
         var mon_interval = setInterval(fadeout,100);
        }
    }
}

8 réponses

cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
25 oct. 2008 à 09:59
Salut,

pas besoin de créer une fonction dans une fonction...
pourquoi ne pas faire simplement ceci ?

var vol = monSon1.getVolume();
clip1.onEnterFrame = function(){
    if(clip1._currentframe>=445){
        monSon1.setVolume(vol--);
        trace(vol);
        if (vol<=0){
            delete (this.onEnterFrame)
        }
    }
}

@+
0
cs_dav21 Messages postés 8 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 28 octobre 2008
26 oct. 2008 à 16:56
Merci de me répondre.


Le problème avec ce code, c'est que je n'arrive pas à contrôler la vitesse de diminution du son. Avec setInterval, tu gère la vitesse de diminution du son en millisecondes + la force de diminution du son (exemple: -=5 ou -=10).
Pourrais-tu me montrer comment intégrer un setInterval dans mon onEnterFrame? (je suis chiant je sais )
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
27 oct. 2008 à 11:00
Salut,

en fait, tu ne dois pas l'intégrer dans ton onEnterFrame mais dans une fonction externe

var vol = monSon1.getVolume();
var mon_interval:Number=null
clip1.onEnterFrame = function(){
    if(clip1._currentframe>=445){
            mon_interval = setInterval(fadeout,100);
            delete (this.onEnterFrame)
        }
    }
}

function  fadeout (){
            vol -=1 ;
            monSon1.setVolume(vol);
            trace(vol);
            if (vol<=0){
               clearInterval(mon_interval);
            }
}

@+
0
cs_dav21 Messages postés 8 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 28 octobre 2008
27 oct. 2008 à 21:03
Merci.
jJe vais essayer
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_dav21 Messages postés 8 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 28 octobre 2008
27 oct. 2008 à 22:11
Nickel, ça marche!!
c cool
merci bien.
Juste une petite quetion (quoique je peux chercher par moi-même c comme tu le sens): c quoi ce "var mon_interval:Number=null"? parce que j'aime bien comprendre ce que je tape plutôt que de recopier bêtement

à+
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
28 oct. 2008 à 09:12
Hello,

var mon_interval:Number=null

Définition de la variable mon_interval. Typage Number (c'est un nombre, un interval est toujours un nombre)
=null affectation de la 'valeur' null. Null ne correspond pas à 0, cela signifie absence de valeur.

@+
0
cs_dav21 Messages postés 8 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 28 octobre 2008
28 oct. 2008 à 20:13
Re

tu veux dire que ta variable elle est nulle  pour pas qu'elle se lance dès la première image mais seulement à la frame indiquée vu que dans le code tu lances la fonction setInterval (parce que j'avais essayé en mettant la fonction en dehors de l'onEnterFrame et le setInterval s'était lancé dès la première image)?
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
29 oct. 2008 à 08:27
Salut,

en fait je ne fais qu'affecter une valeur à la variable, même si dans ce cas précis la valeur est 'null'
Si j'ai bonne mémoire, dès que tu crées un setInterval la fonction est appellée directement la première fois, sans délais.

@+
0
Rejoignez-nous