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

ActionScript 3 Discussion :

gestion d'evenement globale sur une arbo de symbole


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 5
    Par défaut gestion d'evenement globale sur une arbo de symbole
    Bonjour,

    je suis en train de réaliser une animation du type suivant :
    root
    |
    +-- Symbole Papa
    |
    +-- Symbole Fiston1
    +-- Symbole Fiston2
    +-- ...
    En gros l'idée c'est que symbole papa est une carte et les symbole fiston sont des logos sur cette carte. Au départ la carte est cadré sur le lecteur flash, et au premier clic on zoom sur la carte et elle suit la souris. Lorsqu'on sort du player on fait un zoom arrière.

    Le problème est que lorsque la souris passe sur un logo, mon code considère que je sort, donc zoom arrière...

    j'ai essayer de faire les addeventlistener sur root et stage mais ça ne change rien.

    J'utilise une classe Main.as associée au document de base.

    voila si qqn a une idée un lien ou qqchose pour me dépanner...
    merci d'avance

    le code :
    (le symbole papa est en fait "fond_mobile_o1")
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    package {
    	import flash.events.Event;
    	import flash.events.MouseEvent;
    	import flash.utils.Timer;
    	import flash.display.*;
    	import flash.text.*;
     
    	public class Main extends MovieClip{
     
     
    		public function Main(){
    			// méthode principale
    			var lMainWidth:int = cadre_o1.width;
    			var lMainHeight:int = cadre_o1.height;
    			var lMapWidth:int = fond_mobile_o1.width;
    			var lMapHeight:int = fond_mobile_o1.height;
     
    			fond_mobile_o1.scaleX = lMainWidth / lMapWidth;
    			fond_mobile_o1.scaleY = lMainHeight / lMapHeight + 0.007;
    			fond_mobile_o1.x = 0;
    			fond_mobile_o1.y = 0;
     
    			stage.addEventListener(MouseEvent.CLICK, zoomIn);
    		}
     
    		private function zoomIn (e : Event){
    			fond_mobile_o1.scaleX = 1;
    			fond_mobile_o1.scaleY = 1;
     
    			stage.addEventListener(Event.ENTER_FRAME, moveMap);
    			stage.addEventListener(MouseEvent.MOUSE_OUT, zoomOut);
    		}
     
    		private function zoomOut (e : Event){
    			var lMainWidth:int = cadre_o1.width;
    			var lMainHeight:int = cadre_o1.height;
    			var lMapWidth:int = fond_mobile_o1.width;
    			var lMapHeight:int = fond_mobile_o1.height;
     
    			fond_mobile_o1.scaleX = lMainWidth / lMapWidth;
    			fond_mobile_o1.scaleY = lMainHeight / lMapHeight + 0.007;
    			fond_mobile_o1.x = 0;
    			fond_mobile_o1.y = 0;
     
    			stage.removeEventListener(Event.ENTER_FRAME, moveMap);
    			stage.removeEventListener(MouseEvent.MOUSE_OUT, zoomOut);
    		}
     
    		private function moveMap (e : Event){
    			var lMainWidth:int = cadre_o1.width;
    			var lMainHeight:int = cadre_o1.height;
    			var lMapWidth:int = fond_mobile_o1.width;
    			var lMapHeight:int = fond_mobile_o1.height;
    			var lCoefW = (lMainWidth - lMapWidth) / lMainWidth;
    			var lCoefH = (lMainHeight - lMapHeight) / lMainHeight;
    			var lDelay = 10; // c'est la variable qui détermine la vitesse.
     
     
    			fond_mobile_o1.x = (fond_mobile_o1.x + ((lCoefW * mouseX - fond_mobile_o1.x ) / lDelay));
    			fond_mobile_o1.y = (fond_mobile_o1.y + ((lCoefH * mouseY - fond_mobile_o1.y ) / lDelay));
     
    		}
    	}
    }

  2. #2
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    salut,

    il te suffit de tester dans le zoomOut si tu survoles un logo ..

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 5
    Par défaut
    Je ne vois pas comment faire.
    Lorsque je rentre dans la méthode zoomOut(), c'est que je suis sorti de l'objet père et que je suis sur un logo, mais "e.currentTarget" pointe toujours sur le père. du coup je ne vois pas comment tester, dans zoomOut() où je suis.

  4. #4
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    si c'est pas currentTarget alors c'est target, une chance sur deux ...

Discussions similaires

  1. Gestion des styles au niveau global sur une appli
    Par Alikendarfen dans le forum Développement Windows
    Réponses: 0
    Dernier message: 18/02/2015, 21h27
  2. Problème avec un pointeur global sur une variable manager
    Par sepullayer dans le forum C++/CLI
    Réponses: 12
    Dernier message: 26/03/2007, 13h00
  3. [Débutant] gestion d'un clic sur une liste box
    Par claireP23 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 08/01/2007, 15h34
  4. Recherche globale sur une table
    Par webrider dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2006, 11h41
  5. capter l'evenement clic sur une cellule d'un string grid
    Par lasconic dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/06/2003, 10h51

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