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'évenements Mouse suite à un Drag&Drop


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2005
    Messages : 9
    Par défaut Gestion d'évenements Mouse suite à un Drag&Drop
    Bonjour à tous !

    Je développe un peu en AS3 en ce moment.
    J'essaye de faire un puzzle pour commencer.

    Donc l'idée est :

    Lorsque je clique (down) sur une pièce, je commence mon startDrag();
    La pièce fait 64 x 64 pixels.

    Donc la pièce suit bien le mouvement de ma souris sans problème.
    Mais je souhaiterai que lorsque je passe ma souris (avec la pièce en dessous) sur une case de mon puzzle général, j'aimerai lancer une autre fonction.

    Je m'explique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    piece1.addEventListener(MouseEvent.MOUSE_DOWN, dragPiece);
    piece1.addEventListener(MouseEvent.MOUSE_UP, dropPiece);
     
    function dragPiece(pEvt:MouseEvent):void
    {
    	pEvt.currentTarget.startDrag();
           //Ici j'aimerai ajouter un nouvel événement
    }
    Donc une fois le startDrag(); la pièce cliquée, elle suit correctement la souris, mais comme ma pièce est au premier plan, alors tous les événements Mouse comme MOUSE_OVER ou MOUSE_OUT des autres éléments de ma scène ne fonctionnent plus.

    J'aimerai savoir si vous connaissez l'astuce pour dire :

    Pour tous les éléments de la scène (en arrière plan ou au premier plan), les événements fonctionnent quand même.

    Si je ne suis pas clair, j'essaierai d'expliquer d'une autre manière.

    Merci d'avance.

    Mini


    GROS EDIT :

    Bon je vais essayer de schématiser le problème :

    Voici un screenshot de mon application (swf) avec quelques explications :

    Nom : probleme_1.jpg
Affichages : 70
Taille : 95,3 Ko

    Donc ce que j'aimerai arriver à faire c'est :

    Lorsque je déplace ma pièce en "Drag" (c'est à dire que je l'ai déjà cliqué),
    Il faut faire apparaitre à chaque fois que la pièce est au dessus d'un futur emplacement libre,
    un carré orange pour dire qu'on peut déposer la pièce ici.
    Donc il faudrait que le futur emplacement libre, change de couleur par exemple, a chaque fois que la pièce est au dessus.

    Donc au début, j'avais fais un MouseEvent.MOUSE_OVER, mais vu que la souris ne quitte jamais la pièce que j'ai séléctionné, alors le MOUSE_OVER ne s'effectue jamais !

    J'espere avoir donner de nouvelles informations.

    Merci

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    piece1.addEventListener(MouseEvent.MOUSE_DOWN, dragPiece);
    Il me semble que l'ecoute de l'évenement "MOUSE_UP" devrait être placé sur la scène ou un container, mais cela depend de ce que tu veux faire, j'imagine...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    piece1.addEventListener(MouseEvent.MOUSE_UP, dropPiece);
     
    function dragPiece(pEvt:MouseEvent):void
    {
    	pEvt.currentTarget.startDrag();
           //Ici j'aimerai ajouter un nouvel événement
    }
    sinon : Dans la fonction dragPiece, je mettrait une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isDragging : Boolean = true;
    et je stockerai pEvt.currentTarget dans une variable de type objet d'affichage : MovieClip ou Sprite, selon ce que tu veux drag.
    var pieceMoving : Movieclip = pEvt.currentTarget

    puis, dans le code principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isDragging==true) checkPiece(); //Si le drag est activé, on lance la fonction checkpiece
    voici la fonction que je mettrai :
    slotSprite est un sprite (visible ou non) que tu poses sur ta scene.
    Tu n'as plus qu'a faire un test de collision.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function checkPiece ()
    {
    	if (pieceMoving.hitTestObject(slotSprite))
    		{
    		slotSprite.alpha = 1;
    		}
     
    }
    Plus clair, j'ai joint un fichier "exercice", que j'ai fait exprés pour toi !
    En tout cas, merci pour ta question, ca m'a fait bosser un peu.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre habitué
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2005
    Messages : 9
    Par défaut
    Merci pour ta réponse.

    J'ai mis du temps à répondre, car je bossais sur pas mal de choses en parallèle.

    En tout cas, avec ce que tu m'as donné, j'ai pu bien avancer !

    Donc merci !


    "Résolu !"

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

Discussions similaires

  1. [MySQL] Mise à jour d'un tableau via BDD suite à un drag and drop
    Par gat91200 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 04/06/2015, 12h39
  2. Déclencher une action suite à un drag and drop [Tree]
    Par scorp_imaj dans le forum Ext JS / Sencha
    Réponses: 3
    Dernier message: 06/12/2013, 13h27
  3. Réponses: 1
    Dernier message: 10/12/2008, 13h44
  4. Réponses: 1
    Dernier message: 16/09/2008, 11h25

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