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] Drag n Drop, sticky/snap/drop


Sujet :

Flash

  1. #1
    Nouveau Candidat au Club
    Enseignant
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut [FLASH 8] Drag n Drop, sticky/snap/drop
    Bon...je suis sur un gros projet pour un jeu que je jou.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    RedOrigX = Rédempteur._x;
    RedOrigY = Rédempteur._y;
    Rédempteur.onPress = function(centreMouse, snapPoints,
    snapRange) {
     
        this.startDrag(false);
        this._x -= this._width/2;
        this._y -= this._height/2;
        this._xscale = 200;
        this._yscale = 200;
    };
     
    Rédempteur.onRelease = function() {
        this.stopDrag();
        this._xscale = 100;
        this._yscale = 100;
        this._x += this._width/2;
        this._y += this._height/2;
    	if (eval(this._droptarget) == A1) {
    	this._droptarget = true;
    	this.dropZone = "A1"}
    	if (eval(this._droptarget) == A2) {
    	this._droptarget = true;
    	this.dropZone = "A2"}
    	RedPosition.text = (Rédempteur.dropZone);
    	RedPosition.setTextFormat(my_fmt);
    	if (eval(this._droptarget) != Space) {
            this._droptarget = false; }
    	else {
    	this._x = RedOrigX;
            this._y = RedOrigY;
    	}
    }
    Ce que j'essai de faire ici est une chose parmi d'autres. J'ai un mc, appelé Rédempteur, que je veux draggé sur une grille de plusieur mc, A1, A2 etc...CE que je veux faire pour le moment, c'est que quand je drop, il se colle au mc (carré 32px) pour ensuite m'afficher le nom du MC oû le Rédempteur à été droppé. Pour afficher le nom, j'y arrive, mais je dois répéter pour chacun, qui va me donner un mal de tête...je suis sur qu'il ya la fonction OR | (ou), que j<Ai essayé, mais jamais marché. ET le droptarget et dropZone , ne STICK/SNAP pas au centre du carré sélectionné.

    Merci pour votre aide...je suis enore basic en actionscript flash, je suis plus graphique...hehehe

  2. #2
    Nouveau Candidat au Club
    Enseignant
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour à tous...

    Je sais pas si c'Est à cause que je ne suis pas clair dans se que je veux faire, ou c'Est parce que personne ne sait comment faire? Est-ce vraiment compliquer? pourquoi personne ne répond?

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    non, je crois plutot qu'ils ont tous eu peur du mot "graphiste" ... le dernier qui est passé sur ce forum a été lapidé ... et les explications n'etaient peut etre pas 100% limpide

    ya plusieurs soluce pour ce que tu veux faire, tu pourrais juste utiliser la position du clip draggé, ou un hitTest avec les "A1, A2" dans ce cas la une boucle sur un tableau aiderait a simplifier le code ... etc

    si tu as un FLA propre (avec juste ton probleme dedans), je pense que ca aiderait a la comprehension et a l'aide.
    Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
    Mon blog : http://web.codeur.free.fr

  4. #4
    Nouveau Candidat au Club
    Enseignant
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Ah ok..c'est claire, je vois déjà le problème que ça peu apporter quand un simple graphiste se montre ici...Mais moi, je ne suis pas juste graphiste...j'apprend le PHP, et vais commencer le Ajax...juste que j'Ai pas trop de logique et C'EST ce qu'il faut pour ce genre de script...JAvascript était ok il y a 6 ans...maintenant, il en a trop

    Bon, vous pouvez toujours voir l'interface...

    Combat Spatial

    Seul 2 boutons (navire) son actif pour le moment...

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    je ne suis pas juste graphiste...j'apprend le PHP, et vais commencer le Ajax
    alors soit le bienvenue


    ok, la je vois parfaitement ce qu'il faudrait faire avec le SWF sous les yeux.


    un exemple pour le _x :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    this.onMouseMove = function() {
       // 1 - on test qu'on est bien sur la surface de la grille avant de creer " l'accrochage "
       // .................
       // 2 - accrochage en _x tous les 50px
       mcDrag._x = Math.round(_xmouse / 50) * 50;
    };
    et voila
    Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
    Mon blog : http://web.codeur.free.fr

  6. #6
    Nouveau Candidat au Club
    Enseignant
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    hmmm...Je crois que mon affaire deviens trop compliqué. Ma grille est en faite un MC, et dedans sont multiple carré MC, nommé A1 A2 etc...j'ai surement un _parent a faire quelque part...

    Je peux t'envoyer le FLA? pour que tu y jette un oeil?

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    si tu veux mais franchement c'est tout simple, tu as fais bien plus compliqué jusqu'a maintenant ..

    la tu as juste des conditions a rajouter pour que l'accrochage fonctionne que sur la surface de la grille, virer le startDrag(), rajouter mon bout de code, et refaire onPress ou onRelease avec un booléen pour le début et le stop du deplacement.

    et maintenant que j'ai vu l'anime, je sais que faire des MC pour les cases n'etait pas du tout obligatoire (peut etre pas la direction la + simple ?), tu peux te servir de la coordonnées d'accrochage et d'un tableau a 2 dimensions qui represente la grille.
    Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
    Mon blog : http://web.codeur.free.fr

  8. #8
    Nouveau Candidat au Club
    Enseignant
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Justement, c'est le système d'accrochage que je ne réussi pas à faire...et tableau en 2D??

  9. #9
    Nouveau Candidat au Club
    Enseignant
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    J'ai réussi à adapter ton code avec mon idée, sauf que ca ne fait pas ce que je veux à la fin...du moins une parti lah. j'ai réussi à déplacer les boutons aux bons endroit, sauf que quand je change l'axe des 0,0 ca me donne des décimale sur certaine position, et ne calucule plus comme il le faut.

    Ya moyen de donner un nom d'instance au bouton? car là, ca appel un numéro, je voudrais avoir son nom.

    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
    // -----------------------------------------------------------------------------------------------
    // Creation tableau vide (chaque valeur est égal a 0 (0 = pas de vaisseau))
    // -----------------------------------------------------------------------------------------------
    var tbposition = new Array();
    for (var nbY = 0; nbY < 11; nbY++) {
    	tbposition[nbY] = new Array();
    	for (var nbX = 0; nbX < 32; nbX++) {
    		tbposition[nbY][nbX] = 0;
    	}
    }
    // -----------------------------------------------------------------------------------------------
    //Placement des vaisseaux 
    // -----------------------------------------------------------------------------------------------
    // nom de liaison : 1 a 5 (sert aussi a définir le type du vaisseau)
    for (var nbA = 1; nbA < 100; nbA++) {
    	var mc = this.attachMovie(nbA, "mc" + nbA, this.getNextHighestDepth());
    	mc._x = 32;
    	mc._y = 32;
    	mc._y = mc._height + this['mc' + (nbA - 1)]._y;
    	mc.nom = this
    	mc.nbTypeVaisseau = nbA;
    	mc.blSurLaGrille = false;
    	// ---------------------------------
    	// ---------- EVENEMENTS -----------
    	// ---------------------------------
    	mc.onPress = function() {
    		if (this.blSurLaGrille) {
    			// si le vaisseau est sur la grille on efface sa position du tableau
    			tbposition[((this._x - 32) / 32)][(this._y / 32)] = 0;
    		}
    		this.onMouseMove = function() {
    			// 1 - on test qu'on est bien sur la surface de la grille avant de creer " l'accrochage "
    			if (_xmouse > 0 && _xmouse < 704 && _ymouse > 0 && _ymouse < 475) {
    				// 2 - accrochage en _x tous les 50px
    				this._x = Math.round(_xmouse / 32) * 32;
    				// 2 - accrochage en _x tous les 50px
    				this._y = Math.round(_ymouse / 32) * 32;
    			}
    		};
    	};
    	mc.onRelease = mc.onReleaseOutside = function () {
    //		trace("Vaisseau placé a -> \nX : " + ((this._x - 160) / 160) + "\nY : " + (this._y / 64) + "\nType : " + this.nbTypeVaisseau);
    //		trace('----------------');
    //		this.blSurLaGrille = true;
    		// on définit la position du vaisseau dans le tableau avec son type
    		tbposition[((this._x - 32) / 32)][(this._y / 32)] = this.nbTypeVaisseau;
    		delete this.onMouseMove;
    	RedPosition.text = ("\nX : " + ((this._x - 32) / 32) + "\nY : " + (this._y / 32));
    	RedPosition.setTextFormat(my_fmt);
    	};
    }
    Le RedPosition est en faite envoyé sur un layer qui affiche la position du bouton...sauf que là, tout les boutons affiche au même endroit car je ne peux pas prendre en charge l'instance/nom du bouton...JE ne connais pas encore ton système d'appel dans la librairie...

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    tu devrais etre le nez dans la DOC a la page : attachMovie()
    ya pas de boutons, juste des clips qui sont tous nommés -> voir mail.
    Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
    Mon blog : http://web.codeur.free.fr

Discussions similaires

  1. Drag&Drop : Zone de Drop décallée
    Par 686insomnia686 dans le forum jQuery
    Réponses: 1
    Dernier message: 01/03/2013, 14h52
  2. [FLASH 8] Drag & Drop sur clip
    Par arnaud_verlaine dans le forum Flash
    Réponses: 5
    Dernier message: 15/06/2006, 09h01
  3. [FLASH 8] Drag'n'Drop sur Textfield ???
    Par Begood dans le forum Flash
    Réponses: 5
    Dernier message: 28/03/2006, 11h15
  4. [FLASH MX2004] Drag and drop entre deux List
    Par aldo-tlse dans le forum Flash
    Réponses: 15
    Dernier message: 24/09/2005, 01h10
  5. [FLASH MX2004] Drag & Drop Horizontal
    Par socomajor dans le forum Flash
    Réponses: 2
    Dernier message: 06/08/2005, 12h08

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