Forums Développement Multimédia

Aller au contenu

Déplacer Un Clip Grâce à Un Clic De La Souris

CODE Actionscript

5 réponses à ce sujet

#1 fartounet

    Ceinture Blanche

  • Members
  • Pip
  • 14 messages

Posté 06 February 2008 - 18:32 PM

Bonsoir,

Et oui, me revoilà ... (c'est en codant le plus que les problèmes montrent le bout de leur nez hein ! ^^)

Donc, évidement, je ne vous le cache pas, j'ai un problème avec mon code, il est simple, c'est que ca ne fonctionne pas ...
je dois encore me compliquer la vie alors qu'il y a p'tet une fonction toute simple pour ca :
Quand je clic à un endroit sur ma scène, le clip me se déplace régulièrement pour aller à l'endroit cliqué. si on clique autre part entre temps, il change de direction et y va... classique en soit.

Mais voici mon code :

Action Script

var vitesse = 1; //vitesse de déplacement

this.onMouseDown = function() { // lorsqu'on clique
x_dep = me._x; //coordonnée horizontales du clip me
y_dep = me._y; //coordonnée verticales du clip me
x_dest = _xmouse; //coordonnée horizontales de la souris
y_dest = _ymouse; //coordonnée verticales de la souris

if(x_dest > x_dep){ //si le point d'arrivé est à droite du point de départ
for(i=x_dep; i < x_dest; i+vitesse){
me._x += vitesse; //il se déplace à droite jusqu'a temps qu'il soit arrivé
}
} else if (x_dest < x_dep){ //s'il est à gauche
for(i=x_dep; i > x_dest; i+vitesse){
me._x -= vitesse; //il se déplace à gauche jusqu'a temps qu'il soit arrivé
}
} else { //sinon
//il ne bouge pas
}
}

Merci d'avance à tout ceux qui auront le courrage de regarder ca ^^
Bonne soirée.

#2 paodao

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 7081 messages

Posté 06 February 2008 - 19:24 PM

salut

tu n'as pas de onEnterFrame ou d'interval, ton code s'execuye donc une seul fois
utilise les tweens, c'est pratique

Action Script


import mx.transitions.Tween;
import mx.transitions.easing.*;

this.onMouseDown = function(){
tx.stop()
tx = new Tween(me, "_x", Strong.easeOut, me._x, _xmouse, 30);

ty.stop()
ty = new Tween(me, "_y", Strong.easeOut, me._y, _ymouse, 30);

}

a+

#3 fartounet

    Ceinture Blanche

  • Members
  • Pip
  • 14 messages

Posté 06 February 2008 - 20:00 PM

Ah oui, Merci ! je connaissait pas, c'est plutôt efficasse, ca m'a permis de découvrir une nouvelle fonction, je vais m'y interresser de plus près du coup icon_razz.gif

le seul problème, c'est que si on clic juste a côté, il ira à ce point très lentement. Si on clique loins, il ira très rapidement sur place ... Tu connaitrais un moyen de pallier ce problème ?

icon_smile.gif

#4 paodao

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 7081 messages

Posté 06 February 2008 - 20:04 PM

salut

dans
tx = new Tween(me, "_x", Strong.easeOut, me._x, _xmouse, 30);
30 correspond au temps en milliseconde
tu dois pouvoir le changer pour mettre une valeur qui depend de la position de la souris

a+


#5 fartounet

    Ceinture Blanche

  • Members
  • Pip
  • 14 messages

Posté 06 February 2008 - 20:23 PM

Oui, j'ai rapidement codé un petit truc :

Action Script

x = Math.abs(me._x - _xmouse);
y = Math.abs(me._y - _ymouse);

distance = Math.sqrt(x*x + y*y);

et j'ai remplacé 30 par distance.

(c'est juste un pythagore, normalement, plus la distance est petite, plus le temps de parcours est cours et c'est proportionnel donc, je pense que ca doit marcher théoriquement)



Sinon, je vais te poser une dernière question, est-ce qu'il y a possibilité pour que je ne sois pas obligé de recliquer à chaque fois ... (enfin, que ca reste possible quand même) mais que donc, si je reste cliqué sur ma souris, le clip continu de suivre, et celà, même quand je bouge ?
je sais pas si je suis très clair ^^'

Merci encore wink.gif

#6 paodao

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 7081 messages

Posté 06 February 2008 - 20:30 PM

utlise l'evenement onMouseMove de la classe Mouse

Action Script


import mx.transitions.Tween;
import mx.transitions.easing.*;
listener = new Object();
listener.onMouseMove = function() {
deplace();
};
this.onMouseDown = function() {
deplace();
Mouse.addListener(listener);
};
this.onMouseUp = function() {
Mouse.removeListener(listener);
};
function deplace() {
tx.stop();
tx = new Tween(me, "_x", Strong.easeOut, me._x, _xmouse, 30);
ty.stop();
ty = new Tween(me, "_y", Strong.easeOut, me._y, _ymouse, 30);
}

a+



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)