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 :

Stopper un drag & drop sur un mc positionné


Sujet :

Flash

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Stopper un drag & drop sur un mc positionné
    Bonjour,

    Je voudrais pouvoir empêcher l'utilisateur de déplacer à nouveau un MC qui a été déplacé et qui est positionné dans la bonne zone (zoneDepot). En effet, je ne veux pas que le compteur (panier) s'incrémente plus d'une fois avec le meme clip

    Voici le code :


    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
    swot1.onPress = function(swot1) {
    	this.startDrag();
    };
    swot1.onRelease = function(swot1) {
    	stopDrag();
    	if (this.hitTest(zoneDepot)) {
    		this._x = 400;
    		panier++;
     
    		}
    	else
    	{
    		this._x = -211;
    	}
    };
    //

  2. #2
    Membre confirmé Avatar de BrItneY
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    488
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 488
    Points : 501
    Points
    501
    Par défaut
    et si tu rajoute une condition ?
    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
     
    done=0;
    swot1.onPress = function(swot1) {
         if(done==0){
             this.startDrag();
         }
    };
    swot1.onRelease = function(swot1) {
          stopDrag();
          if (this.hitTest(zoneDepot)) {
                 this._x = 400;
                 panier++;
                 done=1;
    }
    else
    {
    this._x = -211;
    }
    };
    //
    Blog de BrItneY. Avis et tests de jeux vidéos PC.

    "Un geek, ça n’est avant tout qu’un Homme Assisté par Ordinateur (H.A.O)" (www.copinedegeek.com)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Super ca fonctionne ! C'était très simple et voilà !

    Par contre, je voudrais pouvoir empecher de cliquer dessus... Parce que, s'il ne bouge plus, le fait de cliquer et relacher (onRelease) incrémente toujours le compteur... C'est juste pour peaufinner ici, la solution que tu me proposes conviens déjà fort bien !

    Merci encore !

  4. #4
    Membre confirmé Avatar de BrItneY
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    488
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 488
    Points : 501
    Points
    501
    Par défaut
    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
    //done=0;
    swot1.onPress = function(swot1) {
         //if(done==0){
             this.startDrag();
         //}
    };
    swot1.onRelease = function(swot1) {
          stopDrag();
          if (this.hitTest(zoneDepot)) {
                 this._x = 400;
                 panier++;
                 //done=1;
                 this.enabled=false;
    }
    else
    {
    this._x = -211;
    }
    };
    //
    Si tu empeches le clic, je crois que ca empeche aussi le drag...dans ce cas, tu n'as plus besoin de la variable done... ce que j'ai fait dans le code au dessus, sinon bah rajoute le tite ligne que j'ai mis...
    Blog de BrItneY. Avis et tests de jeux vidéos PC.

    "Un geek, ça n’est avant tout qu’un Homme Assisté par Ordinateur (H.A.O)" (www.copinedegeek.com)

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merveilleux !

    Avant d'abuser complètement, tu as une idée de la manière dont je peux faire un gotoAndPlay une fois qu'une variable a atteint une certaine valeur ?

    J'essaie çà :

    if (panier==9) {

    gotoAndPlay(2);

    }

    Mais ca ne veut pas marcher...

  6. #6
    Membre confirmé Avatar de BrItneY
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    488
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 488
    Points : 501
    Points
    501
    Par défaut
    Quelque chose dans ce genre la ?
    essaye et dis moi
    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
     
    //done=0;
    swot1.onPress = function(swot1) {
         //if(done==0){
             this.startDrag();
         //}
    };
    swot1.onRelease = function(swot1) {
          stopDrag();
          if (this.hitTest(zoneDepot)) {
                 this._x = 400;
                 panier++;
                 //done=1;
                 this.enabled=false;
                 if(panier==9){
                          _parent.gotoAndPlay(2);
                 }
    }
    else
    {
    this._x = -211;
    }
    };
    //
    Blog de BrItneY. Avis et tests de jeux vidéos PC.

    "Un geek, ça n’est avant tout qu’un Homme Assisté par Ordinateur (H.A.O)" (www.copinedegeek.com)

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bin non... Disons que le code que j'ai mis est une portion seulement... ca serait plutot :

    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
     
    // premier movie qu'on positionne dans une zone
    swot1.onPress = function(swot1) {
             this.startDrag();
    };
     
    swot1.onRelease = function(swot1) {
          stopDrag();
          if (this.hitTest(zoneDepot)) {
                 this._x = 400;
                 panier++;
                 this.enabled=false;
    }
    else
    {
    this._x = -211;
    }
    };
     
    // deuxieme movie qu'on positionne dans une autre zone
    swot2.onPress = function(swot2) {
    	this.startDrag();
    };
    swot2.onRelease = function(swot2) {
    	stopDrag();
    	if (this.hitTest(ZoneDepot4)) {
    		this._x = 210;
    		panier++;
    		this.enabled=false;
    	}
    	else
    	{
    		this._x = -211;
    	}
    };
    // il y a 9 movies en tout, avec incrémentation du compteur à chaque positionnement
    // puis on teste la valeur du compteur et si = à 9 alors on va à la frame 2
     
    if (panier==9) {
    	_parent.gotoAndPlay(2);
    	}
    En fait, je me dis que mon if est mal foutu mais je ne sais pas ou le mettre !!!

  8. #8
    Membre confirmé Avatar de BrItneY
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    488
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 488
    Points : 501
    Points
    501
    Par défaut
    Le probleme, c'est que ta variable panier, on sait pas a qui elle appartient, je m'explique :

    quand tu fais " panier++ ", la variable panier, je dirais qu'elle est cree seulement pour le clip (movie)
    ce qu'il faut que tu fasse, c'est quelquechose comme cela :

    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
     
    this.panier=0; // initialisation de la variable panier.
    swot1.onPress = function(swot1) {
             this.startDrag();
    };
     
    	swot1.onRelease = function(swot1) {
          stopDrag();
          if (this.hitTest(zoneDepot)) {
                 this._x = 400;
                 _parent.panier++;
                 this.enabled=false;
    }
    else
    {
    this._x = -211;
    }
    };
     
    // deuxieme movie qu'on positionne dans une autre zone
    swot2.onPress = function(swot2) {
    	this.startDrag();
    };
    swot2.onRelease = function(swot2) {
    	stopDrag();
    	if (this.hitTest(ZoneDepot4)) {
    		this._x = 210;
    		_parent.panier++;
    		this.enabled=false;
    	}
    	else
    	{
    		this._x = -211;
    	}
    };
    // il y a 9 movies en tout, avec incrémentation du compteur à chaque positionnement
    // puis on teste la valeur du compteur et si = à 9 alors on va à la frame 2
     
    if (this.panier==9) {
    	this.gotoAndPlay(2);
    }
    si le if() est pas bien place, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    leifquonaime=function(){
    	if (this.panier==9) {
    		this.gotoAndPlay(2);
    	}
    }
    et tu appelles cette fonction comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    swot2.onRelease = function(swot2) {
    	stopDrag();
    	if (this.hitTest(ZoneDepot4)) {
    		this._x = 210;
    		_parent.panier++;
    		this.enabled=false;
    		_parent.leifquonaime();
    	}
    	else
    	{
    		this._x = -211;
    	}
    };
    essaye et fais nous part de tes resultats
    Blog de BrItneY. Avis et tests de jeux vidéos PC.

    "Un geek, ça n’est avant tout qu’un Homme Assisté par Ordinateur (H.A.O)" (www.copinedegeek.com)

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Ca ne semble pas marcher...

    Juste préciser, ma variable 'panier' est bien à 0 quand je démarre mon script.
    Je me demande si je ne dois pas tester à chaque déplacement d'objet pour voir si la valeur est à 9 à ce moment là...

    Je vais encore chercher...

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Ok j'ai trouvé.
    Il fallait tester la valeur de la variable dans chaque function drag & drop et pas à la fin.

    Merci pour tout encore !

    A bientot

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

Discussions similaires

  1. Drag and drop sur une PictureBox
    Par abdiouldbody dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/06/2009, 15h55
  2. drag and drop sur une listBox?
    Par Mickey.jet dans le forum Delphi
    Réponses: 3
    Dernier message: 30/09/2006, 10h27
  3. Drag and drop sur du text ?
    Par isa150183 dans le forum JSF
    Réponses: 2
    Dernier message: 05/07/2006, 06h28
  4. [FLASH 8] Drag'n'Drop sur Textfield ???
    Par Begood dans le forum Flash
    Réponses: 5
    Dernier message: 28/03/2006, 11h15
  5. Drag and drop sur un JTree
    Par tomca dans le forum Composants
    Réponses: 4
    Dernier message: 02/08/2005, 10h54

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