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

Tigerlely 14 Messages postés mardi 29 mai 2007Date d'inscription 26 février 2010 Dernière intervention - 25 mars 2008 à 12:59 - Dernière réponse : cs_Girou 1204 Messages postés lundi 10 mars 2003Date d'inscription 23 juillet 2009 Dernière intervention
- 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
Tigerlely 14 Messages postés mardi 29 mai 2007Date d'inscription 26 février 2010 Dernière intervention - 25 mars 2008 à 15:41
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

Merci Tigerlely 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de Tigerlely
cs_Girou 1204 Messages postés lundi 10 mars 2003Date d'inscription 23 juillet 2009 Dernière intervention - 25 mars 2008 à 13:11
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
Tigerlely 14 Messages postés mardi 29 mai 2007Date d'inscription 26 février 2010 Dernière intervention - 25 mars 2008 à 13:13
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
Tigerlely 14 Messages postés mardi 29 mai 2007Date d'inscription 26 février 2010 Dernière intervention - 25 mars 2008 à 14:26
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
cs_Girou 1204 Messages postés lundi 10 mars 2003Date d'inscription 23 juillet 2009 Dernière intervention - 25 mars 2008 à 15:27
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
cs_Girou 1204 Messages postés lundi 10 mars 2003Date d'inscription 23 juillet 2009 Dernière intervention - 25 mars 2008 à 15:48
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.