Double click / clique

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 651 fois - Téléchargée 29 fois

Contenu du snippet

Dans cette source vous trouverez le code nécessaire pour gérer correctement un double click. C'est à dire :

- Gestion du double click.
- Gestion du click long (laissé enfoncer longtemps puis lâché).
- Gestion du click simple.
- le click simple n'est pas appellé si c'est un double click.

Quelques explications rapide, si vous prenez la source telle quelle, les fonctions seront appellés à chaque click de souris. Si vous voulez par exemple, limité le double click sur un CLIP, il vous suffit de faire ces quelques modifications :

- remplacer "onMouseDown" par "MovieClip.onPress"
- remplacer "onMouseUp" par "MovieClip.onRelease"

Pensez biensûr à remplacer MovieClip par l'occurence de votre CLIP.

Source / Exemple :


/* Toutes les variables/fonctions/et autres ont pour préfixe "DC_" non pas pour vous faire chier, mais uniquement pour vous éviter d'avoir un nom de variable ou de fonction identique aux miens. */
/* Pensez à modifier "DC_DC_Latence", "DC_C_Latence" et "DC_C_Verification" comme vous l'entendez. Personnellement je les ai réglé comme je le pensais mais peut-être que ça ne vous conviendra pas. */

DC_nbClick = 0;							// Ne pas toucher
DC_DC_Latence = 300;						// Temps maximum autorisé pour le double click entre le moment ou on baisse le bouton pour la première fois, et ou on le relâche la deuxième fois [ millisecondes ]
DC_C_Latence = 300;						// Temps au bout du quel si l'utilisateur n'a pas relâcher le bouton, le click sera considéré comme long [ millisecondes ]
DC_C_Verification = 150;					// Temps maximum autorisé entre les deux cliques [ millisecondes ]

// Pour limiter le double click à un CLIP, remplacer "onMouseDown" par "MovieClip.onPress"
onMouseDown = function ()
{
	if (DC_nbClick == 0)
		DC_DATEx = DC_whatTime();
	
	DC_nbClick ++;
}

// Pour limiter le double click à un CLIP, remplacer "onMouseUp" par "MovieClip.onRelease"
onMouseUp = function ()
{
	var DC_d = (DC_whatTime() - DC_DATEx);
	
	if (DC_nbClick == 2 && DC_d < DC_DC_Latence)
	{
		DC_nbClick = 0;
		
		// ACTION ---
		trace ("Double Click");
		// --- ACTION
		
		return;
	}
	
	if (DC_nbClick == 1 && DC_d >= DC_C_Latence)
	{
		DC_nbClick = 0;
		
		// ACTION ---
		trace ("Long Click");
		// --- ACTION
		
		return;
	}
	else if (DC_nbClick == 1 && DC_d < DC_C_Latence)
	{
		DC_IDespaceClick = setInterval (DC_espaceClick, DC_C_Verification);
		return;
	}
}

// Fonction vérifiant s'il y a eut ou non un double click. S'il n'y en a pas eut, alors ça signifie que c'est un simple click.
function DC_espaceClick ()
{
	if (DC_nbClick == 1)
	{
		DC_nbClick = 0;
		
		// ACTION ---
		trace ("Simple Click");
		// --- ACTION
	}
	
	clearInterval (DC_IDespaceClick);
}

// Fonction donnant le nombre de millisecondes écoulées depuis le 1er Janvier 1970 à 00:00 (outil de comparaison) ;)
function DC_whatTime ()
{
	var DC_date = new Date ();
	DC_date = DC_date.getTime ();
	
	return DC_date;
}

A voir également

Ajouter un commentaire

Commentaires

pUnKsPiRiT
Messages postés
1
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
30 octobre 2005
-
Merci bien, j'ai réutilisé une partie de ton code pour m'en faire une classe AS2 et ça marche nickel. Attention tout de même :
Dans "onMouseUp = function () ...", si aucune condition n'est vérifiée, il ne se passe rien et lorsqu'on clique une nouvelle fois, DC_nbClick devient supérieur à 2 et là, il se passe plus rien, DC_nbClick continue simplement à être incrémenté... il ne se passe rien dans le cas où il y aurait quelque chose d'anormal.
J'ai juste rajouté comme comportement par défaut
DC_nbClick = 0;
//et après l'appel à l'action à effectuer pour un simple clic
dark_diablo09
Messages postés
5
Date d'inscription
lundi 22 août 2005
Statut
Membre
Dernière intervention
5 décembre 2005
-
Excuser moi, mais pourquoi le double click ne s'applique que sur le text de mon bouton? :'( Je ne comprend pas... (bon j'avoue que je suis nul en code donc qqch. m'a surment échappé)
cs_mric1988
Messages postés
3
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
9 août 2005
-
merci beaucoup ça ve énormément me servir ;)

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.