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 :

[FLASH 8] Problème de rollover/rollout sur objets superposés


Sujet :

Flash

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2002
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 37
    Points : 29
    Points
    29
    Par défaut [FLASH 8] Problème de rollover/rollout sur objets superposés
    bonjour !

    voilà mon problème :

    je veux créer un objet drag'n'droppable que l'on peut supprimer.

    Imaginez un simple carré de couleur par exemple. Et quand je passe la souris au dessus de l'objet, une croix apparait en haut à droite et quand on clique sur cette croix, ca supprime l'objet.

    Mon problème :

    Mon objet est composé de 3 niveaux. L'image de fond, la croix (btnClose) et un bouton invisible encapsulé dans un movieclip (mcDrag) , de la même taille que l'image de fond, pour gérer le drag'n'drop et l'apparition/disparition de la croix.

    mcDrag a des fonctions pour les états rollover, rollout, press et release.

    press et release pour le drag'n'drop, rollover/rollout pour la gestion de la croix.

    le pb c'est que j'arrive à faire apparaitre la croix mais quand j'amène le curseur de la souris sur la croix, ça déclenche l'évènement rollout de mon mcDrag, ce qui fait disparaitre la croix. J'ai joué sur les profondeurs, mais soit la croix est au dessus et ça déclenche le rollout, soit elle est en dessous et dans ce cas la croix ne réagit plus aux évènements souris (qui veut que quand je clique sur la croix, ça supprime tout l'objet)

    si vous avez des idées, voire, une solution (miracle!), ça m'aiderait bien, parce que je commence à m'arracher les cheveux. J'ai testé plein de trucs, mais j'obtiens jamais un comportement correct et constant.

    je précise que je suis encore assez novice en flash donc peut être que je passe à coté d'un truc évident...

  2. #2
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Salut,

    tu peux faire voir le code que tu as essayé ? ou mieux mettre en lmigne ton fla ?
    Je pense que cela pourrait aider la compréhension et faciliter la résolution de ton pb.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2002
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Salut !

    en cherchant un peu, j'ai trouvé une solution qui marche.

    De toute façon, pour le rollover c'est impossible, flash ne gère qu'une seule zone à la fois, donc superposer les deux objets et avoir un rollover pour chacun ça peut pas marcher.

    je suis donc passé par les coordonnées de la souris par rapport à l'objet.

    grosso modo j'ai ajouté ça à mon movieclip qui contient imagedefond+croix+boutondedrag :

    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
    //réagit aux mouvements de la souris.
    this.onMouseMove = function() {
    	//on compare les coordonnées de la souris avec la surface du movieclip
    	if ( _root._xmouse > this._x-2 && 
    		 _root._xmouse < this._x+42 &&  
    		 _root._ymouse > this._y-2 && 
    		 _root._ymouse < this._y+42)
    	{	// souris au dessus de l'objet -> on affiche la croix
    		this.ShowClose();
    	}
    	else 
    	{	// souris n'est pasau dessus de l'objet -> on cache la croix
    		this.HideClose();
    	}
    };
     
    //quand on clique sur la croix de fermeture, on retire le movieclip de la scène
    btnClose.onPress = function() {
    	this._parent.removeMovieClip();
    }
     
    HideClose(); //par défaut, on cache la croix
     
    //fonction qui affiche la croix de fermeture
    this.ShowClose = function()
    {
    	btnClose._visible = true ;
    }
     
    //fonction qui cache la croix de fermeture
    this.HideClose = function()
    {
    	btnClose._visible = false ;
    }
     
    stop();
    finalement, c'est une solution plutot simple. J'aurais préféré utiliser la fonction hitTest plutot que comparer à la main les coordonnées (là ça va que c'est un carré mon objet mais sinon...) mais j'ai pas réussi.

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

Discussions similaires

  1. [FLASH MX2004] Problème sur les menus flash
    Par patnews dans le forum Flash
    Réponses: 4
    Dernier message: 22/03/2007, 17h07
  2. Réponses: 37
    Dernier message: 17/11/2005, 10h25
  3. Réponses: 2
    Dernier message: 04/10/2005, 15h13
  4. Réponses: 3
    Dernier message: 01/10/2005, 16h58
  5. [FLASH MX] Problème avec l'objet Date
    Par n_tony dans le forum Flash
    Réponses: 13
    Dernier message: 22/03/2005, 13h44

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