Tester si un bouton est appuyé, enfoncé... [Résolu]

Messages postés
14
Date d'inscription
mardi 29 mai 2007
Dernière intervention
26 février 2010
- - Dernière réponse : cs_Girou
Messages postés
1204
Date d'inscription
lundi 10 mars 2003
Dernière intervention
23 juillet 2009
- 25 mars 2008 à 15:48
Bonjour à tous,

Voilà, j'ai une question tout bête... comment tester sur Flash si un bouton (par le clic gauche de la souris) est enfoncé afin de répéter une action tant que le clic n'a pas été relâché.

J'ai cru avoir une lueur d'espoir avec onClipEvent(mouseDown){} mais j'ai l'erreur suivante :
**Erreur** Séquence Scene 1, calque bt, image = 1 :Ligne 13 : Les événements clip ne sont autorisés que pour les occurrences clip
     onClipEvent(mouseDown){

J'avoue que je ne sais pas trop comment utiliser cette fonction.

Si quelqu'un peux me venir en aide... je lui en serais reconnaissante toute ma vie lol car là j'ai usé tous les forums possible en quête de solutions.

Tiger
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
14
Date d'inscription
mardi 29 mai 2007
Dernière intervention
26 février 2010
3
Merci
Ca y est, j'ai enfin trouvé ;)


C'est tout bête, en fait j'avais bon depuis le début, mais étais persuadé que cela ne fonctionné pas à l'époque où j'avais fait les tests. Donc pour ceux que cela intéresse voici comment on fait pour faire une action tant que la personne reste cliquée sur le bouton :



//PRINCIPE :
//on affecte une valeur différente à une variable, ici "test" selon que le bouton est abaissé ou relevé
//puis on appelle la fonction "toto", qui défini les actions a effectuées selon l'état du bouton en testant la valeur de notre variable "test"

monBouton.onPress = function () //quand on clic sur le bouton
{
    test="ok";
    toto();
}



monBouton.onRelease = function () //quand on lâche le bouton
{
    test="no";
    toto();
}

function toto()
{
   onEnterFrame()
   {
      if(test="ok")
      {
         //action a répéter quand le bouton est enfoncé
      }

      if(test="no")
      {
         //action a effectuer quand le bouton est relaché
      }
   }

}


Voilà, j'espère que cela aura aidé quelques flasheurs

Tiger

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Tigerlely
Messages postés
1204
Date d'inscription
lundi 10 mars 2003
Dernière intervention
23 juillet 2009
0
Merci
Salut,

Ce n'est pas la bonne fonction... comme te le signale de debugger de flash onClipEvent n'est utilisable que pour les movieclip et pas pour les boutons.
De plus onClipEvent(mouseDown) selon moi correspond au bouton.onPress()

Perso j'essayerais un truc du style

nom_bouton.onPress()=function(){
   this.onEnterFrame=function(){
      // action à repeter chaque frame
      // attention au ciblage tout de même !!
   }
}
nom_bouton.onRelease()=function(){

   delete (this.onEnterFrame)

   // on annule la fonction onEnterFrame du bouton

}

@+
Commenter la réponse de cs_Girou
Messages postés
14
Date d'inscription
mardi 29 mai 2007
Dernière intervention
26 février 2010
0
Merci
Ok merci, je n'y avais pas pensé, je teste ça de suite... et te tiens au jus encore merci

Tiger
Commenter la réponse de Tigerlely
Messages postés
14
Date d'inscription
mardi 29 mai 2007
Dernière intervention
26 février 2010
0
Merci
Bon ben je viens de tester :( ca ne fonctionne pas. Voici ce que j'ai mis :

BTretour.onPress=function()
{
   BTretour.onEnterFrame=function()
   {

        retour="ok";

        toto2();
   }
}

à la place de :

BTretour.onRollOver = function ()
{
    retour="ok";
    toto2();
}

Mon code fonctionne parfaitemement avec un rollOver mais le résultat recherché est "tant qu'on reste appuyé"... snif, j'vais m'arracher les cheveux.

Tiger
Commenter la réponse de Tigerlely
Messages postés
1204
Date d'inscription
lundi 10 mars 2003
Dernière intervention
23 juillet 2009
0
Merci
Hello,

en essayant comme ceci ?

BTretour.onPress=function()
{
   this.onEnterFrame=function()
   {

        retour="ok"; // Attention dans ce cas 'retour' est une variable dont la porrtée est limitée à la fonction onEnterFrame
        toto2(); // voir aussi la portée de toto2, si toto2 est une fonction placée sur le _root, essaye en ciblant _root.toto2()
   }
}

BTretour.onRelease=function()
{
delete (this.onEnterFrame)
}

@+
Commenter la réponse de cs_Girou
Messages postés
1204
Date d'inscription
lundi 10 mars 2003
Dernière intervention
23 juillet 2009
0
Merci
Attention tout de même à ne pas redéfinir ailleurs la fonction onEnterFrame, cela écraserait les actions définie par la fonction toto() car ta solution crée un onEnterFrame sur _root !!!

D'autre part, dans ton cas l'appel de la fonction toto() n'est pas utile, il suffit de la définit une fois hors de la fonction toto()

monBouton.onPress = function () //quand on clic sur le bouton
{
    test="ok";
}monBouton.onRelease = function () //quand on lâche le bouton
{
    test="no";
}

onEnterFrame()
   {
      if(test="ok")
      {
         //action a répéter quand le bouton est enfoncé
      }

      if(test="no")
      {
         //action a effectuer quand le bouton est relaché
      }
}

@+
Commenter la réponse de cs_Girou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.