IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Discussion :

Détecter si la souris sort du swf


Sujet :

Flash

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 187
    Par défaut Détecter si la souris sort du swf
    Bonjour, j'aimerais savoir si il existe un evenement ou une methode pour détecter lorsque la souris n'est plus dans le swf.
    En fait, j'ai une page html avec un clip à l'interieur et j'ai besoin de déclencher une action lorsque l'utilisateur quitte le swf pour aller naviguer sur ma page.
    Merci d'avance.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    642
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 642
    Par défaut
    Alors, il te suffit de créer un clip qui prend toute la taille de ton anim e tu le mets comme fond.

    Ensuite tu utilise la propriété hitTest() et tu regarde tout le temps si la souris touche ton fond, sinon bah à toi de déterminer l'action,

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 187
    Par défaut
    Excuser moi si ça vous parrait stupide comme question mais je débute avec flash.
    Cela dit merci pour ta reponse c'est une piste à creuser mais j'ai encors quelques problèmes.
    Voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    this.onEnterFrame = function (){
    	if(!this.fond_sensible.hitTest (this._xmouse, this._ymouse,false)){
    		this.gotoAndPlay("depart");
    	}
    };
    Mon animation revient bien au depart lorsque je quite l'animation avec la souris mais uniquement si je maintient le bouton enfoncé.
    En mettant true à la place de false, ça ne marche que à certains endroit de l'annimation et si je vais vite la détection ne se fait pas.
    Des idées?

  4. #4
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Par défaut
    moi j aurais plutot utilisé l evenement onRollOut
    ca evite de tester a chaque enterFrame le hitTest()

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 187
    Par défaut
    Ben c'est ce que je pensais au debut mais il y a d'autres clips dans l'annimation qui utilisent onRollOut et ils se masquent entre eux. Soit le clip fond_sensible se trouve au dessus des autres et il n'y a que lui qui fonctionne, soit il se trouve en dessous et lorsque je passe sur un autre clip le rollOut se declenche car il est masqué par cet autre clip.

  6. #6
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Par défaut
    Salut,

    Peut etre que le protocol asfunctionpourrai t'aider.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <embed onMouseOut="asfunction:this._root.maFonctionActionScriptOut;"></embed>
    Je n'est pas put essayer car asfunction n'est pas reconnu chez moi. (Mozilla/5.0 (X11; U; Linux i686 (x86_64); fr; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 187
    Par défaut
    Merci pour cette réponse. Ca a l'air bien mais je comprends pas trop comment ca marche, si quelqu'un peut m'expliquer comment utiliser la fonction définit ici dans le flash ce serait cool.
    Sinon je creuserais la question demain parce que faut pas déconner, on va pas faire des heures sup quand même

  8. #8
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Par défaut
    rectifaication : asfunction est specifique a flash donc ce que j'ais dit est faux.Seul l etxte html de l'animation flash peut executer le protocol asfunction.

    Mais on peu faire autrement.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <object id="monFlash" onMouseOver="javascript:isOver();"  onMouseOut="javascript:isOut();">
      <embed src="monFlash.swf" name="monFlash" swLiveConnect="true"></embed>
    </object>
     
    <script type="text/javascript">
    var elementFlash=window.document.monFlash;
    function isOver()
    {
      elementFlash.TGotoFrame("/my_mc", 1);
    }
    function isOut()
    {
      elementFlash.TGotoFrame("/my_mc", 2);
    }
    </script>

    Le principe:
    Dans ton animation flash, crée un clip (_root.my_mc) avec deux image clef.
    1ere image clef qui contien le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    stop();
    trace("La souris ne survole pas l'animation");
    2eme image clef qui contien le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    stop();
    trace("La souris survole l'animation");
    J'ais pas testé. Mais j'ais deja eu des probleme avec onMouseOver de la balise object. Donc essai petit a petit.


    faut pas déconner, on va pas faire des heures sup quand même
    ...tu me fais doucement rire

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 187
    Par défaut
    Grand merci à toi CR_Gio, ca marche mais pas sur mozilla
    Cela dit ca viens certainement de moi. Voila le javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function isOut(){
    	alert("OUT");
    	var menu = window.document.menuAccueil;
    	menu.TGotoFrame("/", 5);
    }
    Alors sur safari et IE pas de probleme quand je sort la souris de l'animation, elle se reinitialise bien en frame 5. Avec Mozilla le javascript se declanche (je vois l'alert "OUT") mais pas le changement de frame.
    Si vous voyez mon erreur je suis preneur.

    CR_Gio je doit bien avouer qu'en postant a 2h du matin je dois bien te faire rire avec mes blagues à 2 francs 6 sous Désolé.

  10. #10
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Par défaut
    apparemment ca vien du ciblage de l'animation flash.

    Note: Tu peux utiliser GotoFrame() au lieu de TgotoFrame() étant donné que tu reste sur _root

    Je voulais juste ajouter une derniere chose.
    Cette méthode n'est pas tres portable...

    Je voyais une autre solution. Créer un clip (transparent) au premier plan qui dessine le cadre de ton animation (avec une largeur de 5px par ex.). A ce clip, tu ajout ce code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cadre.onRollOver=function(){trace("La souris ne survole plus l'animation");}
    cadre.onRollOut=function(){trace("La souris survole l'animation");}
    cadre.useHandCursor=false;//raison éstetique
    Le point faible de cette méthode est que si le déplacement de la souris est trop rapide, l'evenement onRoll...() peut ne pas etre déclenché.

    Bref! entre le fait que certain navigateur ne digere pas play(),stop(),GotoFrame() etc.. et la fiabilité de cette dernier méthode, je te conseilerrai de faire une redondance. A savoir utiliser les deux méthode en meme temps.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 187
    Par défaut
    ça y est tous marche trés bien sur tous le navigateurs. En fait le problème venait bien de la maniére d'integrer mon swf dans la page html.
    Pour résumer après de nombreux essais je pense que la meilleur manière de detecter si la souris survolle ou non l'annimation est de passer par javascript pour le rollOut et rollOver (même en etant très véloce avec la souris ca marche) et de communiquer avec flash dans le javascript.

    Voici le code html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <object
          id="menuAccueil"
    	width="573"
    	height="165"
    	data=".../menuAccueil.swf"
    	type="application/x-shockwave-flash"
    	onMouseOut="isOut();">
    	<script type="text/javascript">
    		<!--
    			if(navigator.appName.indexOf("Netscape") == -1)
    				document.write('<param name="swliveconnect" value="true" />');
    		-->
    	</script>
    	<param name="movie" value=".../menuAccueil.swf" />
    	<param name="FlashVars" value="texteAffiche=<? print($texteAffiche); ?>&urlArticle=<? print($urlArticle); ?>&rubriqueAffiche=<? print($type); ?>&titreAffiche=<? print($titreArticle);?>&visuelAffiche=<? print($visuelAffiche); ?>" />
    	<param name="wmode" value="transparent" />
    </object>
    et voici le javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function isOut(){
    	var menu = document.getElementById('menuAccueil');
    	menu.TGotoFrame("/",'5');
    }
    Vous pouvez voir ce que ca donne ici
    Un grand merci à tous ceux qui ont bien voulu répondre et particuliérement à CR_Gio

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Détecter quand le pointeur souris sort d'une APP.
    Par Bighobbit dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 06/10/2006, 17h49
  2. Réponses: 7
    Dernier message: 21/07/2006, 16h02
  3. Réponses: 4
    Dernier message: 11/06/2006, 05h39
  4. Détecter lorsque l'utilisateur sort d'un controle Image
    Par tebonb dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/12/2005, 08h53
  5. Détecter si une souris est connecté...
    Par Foub dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 31/07/2005, 20h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo