Double click / clique

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

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.