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 :

coordination d'un drag entre 2 clip


Sujet :

Flash

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 65
    Points : 46
    Points
    46
    Par défaut coordination d'un drag entre 2 clip
    Bonjour !



    Je reviens demander un peu d'aide...



    J'aimeris coordonner le déplacement d'un clip avec un autre...

    Le premier clip s'appelle "loupe"

    Le second clip s'appelle "conteneur2"



    Pour le moment, j'arrive a drager "loupe" nikel mais "conteneur2" (et l'image qu'il contient) ne suis pas....



    Je vous mets le code fla...

    Si vous avez une idée je suis preneur !



    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    //Définition des variables :
     
    //Création des deux conteneurs :
     
    var conteneur:MovieClip = this.createEmptyMovieClip("conteneur", this.getNextHighestDepth()); 
     
    var conteneur2:MovieClip = this.createEmptyMovieClip("conteneur2", this.getNextHighestDepth());
     
    //Création de l'écouteur :
     
    var mclListener:Object = new Object();  
     
    //Création du movieClipLoader :
     
    var mcl:MovieClipLoader = new MovieClipLoader(); 
     
    //Création de la variable de chargement
     
    var chargement = new LoadVars();  
     
    //Création de la loupe :
     
    var loupe:MovieClip = this.createEmptyMovieClip("loupe", this.getNextHighestDepth());
     
     
     
     
     
    //Evènement loadProgress envoyé par le movieClipLoader qui permet de savoir où en est le chargement :
     
    mclListener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void   
     
    {   //Affichage du nombre de bits total dans le champs de texte dynamique nommé "total"
     
        total.text = bytesTotal+" ko"; 
     
        //Affichage du nombre de bits chargé dans le champs de texte dynamique nommé "charge"
     
        charge.text = bytesLoaded+" ko";  
     
          //Affichage du pourcentage de bit chargé dans le champs de texte dynamique nommé "pourcent"
     
        pourcent.text = Math.floor((bytesLoaded/bytesTotal)*100) + " %";  
     
          //Si le pourcentage est égal à 100
     
        if (pourcent.text == "100 %"){  
     
             //en général, on fait disparaitre cette info de texte 
     
             //(il faut l'avoir fait apparaitre à chaque loadClip, ce qui n'est pas fait dans ce code)  
     
        }  
     
    }  
     
    //Création de l'évènement loadInit qui sera déclenché par le movieclipLoader lorsque le chargement sera fini
     
    //target_mc sert à récupérer le clip dans lequel a été fait le chargement
     
    mclListener.onLoadInit = function(target_mc:MovieClip):Void {
     
                //On définit les coordonnées du clip appellé "loupe" : (100,245)
     
                loupe._x=100;
     
                loupe._y=245;
     
                //On définit les dimensions du clip appellé "loupe" : (125x125)
     
                loupe._width=125;
     
                loupe._height=125;
     
                //On fait appelle à la méthode "drawRectangle" pour définir un rectangle
     
                //dimensions du rectangle :125x125, couleur : #666666, couche alpha de 60%
     
                drawRectangle(loupe, 125, 125, 0x666666, 60);
     
                //On associe le rectangle à target_mc
     
                function drawRectangle(target_mc:MovieClip, boxWidth:Number, boxHeight:Number, fillColor:Number, fillAlpha:Number):Void {
     
                with (target_mc) {
     
                beginFill(fillColor, fillAlpha);
     
                moveTo(0, 0);
     
                lineTo(boxWidth, 0);
     
                lineTo(boxWidth, boxHeight);
     
                lineTo(0, boxHeight);
     
                lineTo(0, 0);
     
                endFill();
     
                }
     
            }
     
     
     
            //Si le chargement a été fait dans "conteneur" on va placer celui-ci aux coordonnées (100,120)
     
            if(target_mc==conteneur) {
     
                conteneur._x = 100;  
     
                conteneur._y = 120; 
     
                //On définit maintenant les dimensions du conteneur1 (250x250)
     
                conteneur._width = 250;  
     
                conteneur._height = 250; 
     
     
     
     
     
            //le premier conteneur est chargé, on charge le 2 ème qui rappellera ici même 
     
            //quand il sera prêt via la methode loadClip  
     
            mcl.loadClip(chargement.image,conteneur2); 
     
     
     
        } 
     
        //Sinon, si le chargement a été fait dans "conteneur2" on va placer celui-ci aux coordonnées x=450
     
        else if(target_mc==conteneur2){ 
     
     
     
            conteneur2._x = 450;
     
            conteneur2._y = -125;
     
     
     
            //vu ce qu'il a écrit dessous, conteneur doit être là avant conteneur2 
     
            //pour qu'il puisse s'appuyer sur ses dimensions  
     
            //Les dimensions du conteneur2 sont égales au double de celle du conteneur1
     
            conteneur2._width=conteneur._width*2;  
     
            conteneur2._height=conteneur._height*2;
     
            conteneur2.setMask(masque);
     
            //Lorsqu'on clic sur "loupe" on peut drager selon les coordonnées suivantes...
     
            loupe.onPress = function() { 
     
             this.startDrag(false, 100, 120, 224, 244 );
     
            };
     
                            //Lorsqu'on relache, le drag s'arrète
     
            loupe.onRelease = function() {
     
             this.stopDrag();
     
            };
     
            //J'ai mis ici la Coordination du déplacement de la loupe avec le conteneur2 A mon avis c'est là que ça merdouille...
     
     
     
            target_mc.onPress = function() {
     
        this.loupe._x = (conteneur2._x-450)*-2;
     
            this.loupe._y = (conteneur2._y-120)*-2;
     
            };
     
     
     
     
     
        }  
     
    }  
     
    //On fait appel au gestionnaire d'évènement onLoad
     
    chargement.onLoad = function(pSuc) {  
     
        if (pSuc) {  
     
            trace("chargement demandé de "+this.image+" sur "+conteneur); 
     
            // Sur conteneur1 on ne peut charger qu'avec le nom de l'image à charger: this.image 
     
            mcl.loadClip(this.image,conteneur); 
     
     
     
            //en dehors de cette fonction this.image devient accessible comme "chargement.image"    
     
        }   
     
    }   
     
    //On attache l'écouteur au movieclipLoader pour qu'il puisse entendre ce qu'il émet
     
    mcl.addListener(mclListener);
     
     
     
    //Pour finir on fait appel au fichier "info6.php" pour effectuer le chargement via la methode "load"
     
    chargement.load("info7.php");

  2. #2
    Membre émérite Avatar de dom_dev
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 073
    Points : 2 338
    Points
    2 338
    Par défaut
    bonjour,

    tu n'as pas un petit fichier source à nous montrer plutôt ?
    je suis un peu parresseux coté lecture de code (et je suis pas le seul )
    Si la ou les réponses obtenues vous ont donné satisfaction n'oublier pas ->
    Et ne rajoutez pas de nouvelles questions éternellement dans le même post surtout si vous en n'êtes pas l'auteur
    MERCI

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 65
    Points : 46
    Points
    46
    Par défaut
    salut,

    j'ai mis les fichiers sources mais tu ne risque pas de voir qlq chose puisque je fais mes test via easy-php... L'image est située sur une base de données...
    Donc ctrl+enter ça marche pô...
    Mais bon... Au cas où...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 65
    Points : 46
    Points
    46
    Par défaut
    bon, j'ai changé mon code,
    ça donne ça maintenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    loupe.onPress = function() {
            this.startDrag(false, 100, 120, 224, 244);    
                onMouseMove = function () {            
                    loupe._x = (conteneur2._x-450)*-2;
                    loupe._y = (conteneur2._y-120)*-2;
                };
            };
            loupe.onRelease = function() {    
                this.stopDrag();    
                delete onMouseMove;
            };
    Je place ça dans le onloadInit mais ça marche tjrs pâs

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 67
    Points : 33
    Points
    33
    Par défaut
    bonjour,

    il me semble que si tu fait cela ç marche :

    _root.onEnterFrame=function() {
    clip1._x=clip2._x+z;
    clip1._y=clip2._y+z';
    }

    avec z le décalage entre l'abcisse du clip 1 et 2
    et z' le décalage entre l'ordonnée du clip1 et 2.

    Voilà

    J'ai joind un fichier exemple

    Voici son code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    _root.onEnterFrame=function() {		// s'execute en boucle
    	clip2._x=clip1._x+60;			// avec z=60
    	clip2._y=clip1._y+85;			// et z'=85
    }
     
     
    clip1.onPress=function() {
    	this.startDrag();
    }
    clip1.onRelease=function() {
    	stopDrag();
    }

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 65
    Points : 46
    Points
    46
    Par défaut
    C'est bon !!!!

    En fait j'avais inversé les variables..

    Il fallait faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    loupe.onPress = function() {
            this.startDrag(false, 100, 120, 224, 244);    
                onMouseMove = function () {            
                    conteneur2._x = -1*(loupe._x+450) /0.5;
                    conteneur2._y = -1*(loupe._y-120)*O.5;
                };
            };
            loupe.onRelease = function() {    
                this.stopDrag();    
                delete onMouseMove;
            };
    Tout ça placé dans le onLoadInit bien chur

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

Discussions similaires

  1. communication entre 2 clips swf… variables et clavier
    Par emiliekun dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 18/08/2009, 18h25
  2. Collision entre 2 clips
    Par tim974 dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 02/09/2008, 11h33
  3. hittest entre 2 clip dynamique
    Par KittenTales dans le forum Dynamique
    Réponses: 2
    Dernier message: 03/12/2007, 17h26
  4. Réponses: 1
    Dernier message: 25/05/2007, 17h53
  5. [FLASH 8] Drag & Drop sur clip
    Par arnaud_verlaine dans le forum Flash
    Réponses: 5
    Dernier message: 15/06/2006, 09h01

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