Trucsweb.com

Flash

Fenêtre Flash de type PopUp (twPopUp)

RDFFav

Fenêtre Flash de type PopUp (twPopUp) avec capture du double-clic

Ce movieClip «twPopUp» facile à installer permet de générer une fenêtre de type PopUp avec la capture du double-clic pour l’ouvrir ou la fermer et le déplacement (drag) de la fenêtre. Télécharger le code complet. Le movieClip est constitué de deux cadres (frames). La fenêtre ouverte sur le premier cadre et la fenêtre fermée sur le deuxième.Flash 5 MX souris sourris click clic clics doubleclick doubleclic double-clic double clic fenêtre window popup pop-up drag hittest déplacement déplacer getTimer _xmouse _ymouse

Ce movieClip «twPopUp» facile à installer permet de générer une fenêtre de type PopUp avec la capture du double-clic pour l’ouvrir ou la fermer et le déplacement (drag) de la fenêtre. Télécharger le code complet. Le movieClip est constitué de deux cadres (frames). La fenêtre "ouverte" sur le premier cadre et la fenêtre "fermée" sur le deuxième. Et bien sûr l’action stop(); sur chacun des cadres. Un simple gotoAndStop(1); ouvre la fenêtre alors qu’un gotoAndStop(2); ferme la fenêtre. Rien de vraiment complexe. Par contre il n’y a aucun événement en Flash pour détecter le double-clic! C’est là que se complique le code...

Utiliser «mctwPopUp» dans un nouveau document Flash

1. Ouvrez «twPopUp.fla» puis la librairie [F11].

2. Dans le dossier «twPopUp» de la librairie, il y a le movieClip «mctwPopUp». En Glissant «mctwPopUp», tout le dossier viendra de lui-même.

3. Dans un nouveau document Flash (ou un projet en cours), glisser «mctwPopUp» sur la scène.

4. Vous pouvez vérifier en ouvrant la librairie [F11] du nouveau document, le dossier «twPopUp» devrait être là.

 

Configurer le popUp

1. Double cliquer sur le popUp pour l’éditer.

2. Au centre, sur le calque "Contenu", changer l’image par celle de votre choix. Vous pouvez sur ce calque ajouter du texte, un movieClip, des boutons etc. Il faut simplement s’assurer de rester sur l’image-clée ou cadre 1 (frame 1). La deuxième c’est pour le popUp en état "fermé".

3. Le fond du contenu peut aussi être changé sur le calque «FondContenu» tout en bas. Cliquer sur la scène pour sélectionner le carré bleu et changer ça couleur dans la fenêtre des propriétés.

4. Le titre du PopUp se change sur le calque «Titre».

 

Tester votre popUp
1. Tester votre Flash.
2. Déplacer le popUp.
3. Double-cliquer sur la bande du haut.
4. Cliquer sur le bouton en haut à droite.

 

TUTORIEL Comment capturer un double-clic
Je n’ai aucune idée pourquoi Macromedia n’a pas tout simplement d’événement "onDoubleClick". Il faut pour cela simuler la capture à l’aide d’un movieClip et l’événement "mouseUp". La technique consiste à capturer un clic et d’évaluer le temps ou l’intervalle entre ce clic et le suivant. Déterminant ainsi s’il s’agit d’un simple clic ou d’un double-clic.

 

La première étape consiste à créer un movieClip (avec un contenu), de le placer sur la scène et d’ouvrir la fenêtre action. Assurez-vous que le movieClip est bien sélectionné.

Il nous faut une variable qui contiendra l’intervalle de temps. Ajouter l’action "onClipEvent (load)" pour initialiser cette variable :

onClipEvent (load) {
  // Initialiser notre variable de test.
  nDernierClic = 0;
}

 

Pour détecter un clic il y a l’événement du movieClip "mouseUp". L’astuce est de garder l’heure quand l’événement est détecté et de mettre l’heure dans notre variable "nDernierClic". Ainsi nous pourrons tester plus tard si l’intervalle entre le premier clic et le second correspond à un intervalle de double-clic. Noter que l’événement "mouseUp" détecte un clic sur toute la surface de la scène. Pour s’assurer que le clic a bien été fait SUR notre movieClip utiliser un "hitTest". Le "hitTest" indiquera si le clic a bien été fait sur le movieClip (il faut du contenu, une image dans le movieClip pour que le "hitest" fonctionne). Donc, si les coordonnées x/y de la souris lors du clic correspondent à celles du movieClip, c’est le temps de donner comme valeur à notre variable nDernierClic l’heure. Ça indique qu’un premier clic a été capturé. En capturant un second clic et sachant que notre variable nDernierClic contient déjà l’heure d’un premier clic, c’est qu’un double-clic vient d’être fait. Ajouter ce code sous le premier dans la fenêtre action :

onClipEvent (mouseUp) {
  // Tester si le clic a bien lieu SUR le movieClip
  if (_parent.hitTest(_root._xmouse,_root._ymouse, true)) {

    // Si notre variable nDernierClic = 0
    // C’est le premier clic, il faut lui donner la valeur de l’heure
    if (nDernierClic == 0) {
      // nDernierClic = maintenant l’heure du premier clic
      nDernierClic = getTimer();

    // Sinon, Voilà un double-clic!!
    // N’oubliez pas de remettre à 0 notre variable nDernierClic
    } else {
      // nDernierClic = maintenant 0
      nDernierClic = 0;
      // Ajouter l’action a entreprendre lors du double-clic ici
      tracer(’Double Clic’);
    }
  }
}

 

Maintenant l’intervalle. Pour déterminer un double-clic nous évaluerons la durée entre les deux clics. Si cette durée est moins de 3 secondes, c’est un double-clic, sinon c’est trop long pour un double-clic. Il faut que ce test soit effectué le plus souvent possible, au moins à toutes les secondes. Pour ce faire, l’événement du movieClip "enterFrame" est effectué 12 fois seconde (si votre Flash est cadencé à 12 cadres seconde), ce qui est amplement suffisant. Alors la seule chose à faire, c’est de déterminer si la durée est trop grande pour remettre notre variable nDernierClic à zéro. Ajouter sous les codes précédents ce nouveau code :

onClipEvent (enterFrame) {
  // Tester d’abord si un premier clic a été fait
  // Si nDernierClic est > que 0 c’est qu’elle contient l’heure d’un premier clic.
  if (nDernierClic>0) {

    // Sachant qu’un premier clic a été détecté
    // Ont test la différence entre l’heure actuelle - l’heure du premier clic
    // Si la différence est plus grande que 300 (3 secondes)
    // On annule le premier clic en mettant à 0 notre variable nDernierClic
    if ((getTimer()-nDernierClic)>300) {
      nDernierClic = 0;
    }
  }
}

 

Conclusion
Voilà, c’est tout. À chaque clic, nous savons maintenant si un autre clic a été détecté lors des 3 dernières secondes. Ça fonctionne asser bien malgré le fait que cette technique ajoute une charge au moteur Flash. 12 fois seconde et à temps plein, ça prend une bonne raison pour utiliser le double-clic dans vos animations Flash.

En résumé, créez-vous un movieClip, avec un contenu! Glissez-le sur la scène et ouvrez la fenêtre action. Sélectionner votre movieClip en cliquant dessus et copier ce code dans la fenêtre action :

onClipEvent (load) {
  nDernierClic = 0;
}

onClipEvent (mouseUp) {
  if (_parent.hitTest(_root._xmouse,_root._ymouse, true)) {
     if (nDernierClic == 0) {
      trace(’Clic’);
      nDernierClic = getTimer();
    } else {
      nDernierClic = 0;
      trace(’Double Clic’);
    }
  }
}

onClipEvent (enterFrame) {
  if (nDernierClic>0) {
    if ((getTimer()-nDernierClic)>300) {
      nDernierClic = 0;
    }
  }
}

Django (Oznog) Blais
Dernière mise à jour :

Commentaires

       Visites : 1093 - Pages vues : 32733
X

Trucsweb.com Connexion

Connexion

X

Trucsweb.com Mot de passe perdu

Connexion

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte

Créer un compte

.
@