Afficher un message
  #1 (permalink)  
Vieux 18/12/2003, 22h00
Avatar de eRom
eRom eRom est déconnecté
Membre
 
Date d'inscription: December 2003
Localisation: Fance
Messages: 41
[TUTO MX] Déplacer un objet

Bonjour à tous,

Présentation
Alors un petit peu d'actionscript pour déplacer un objet sur notre scène Flash. Le tout sans faire d'interpolation manuelle, d'animation, ....

Dans ce tuto, nous allons voir la notion de prototype et voir comment les proto facilitent la vie...

Généralités
Dans notre exemple, on veut déplacer un clip (élément) en cliquant quelque part avec notre souris.
Graphiquement, on va créer un rectangle, assez grand (400x300) et en faire un MovieClip. Nommons son instance MCzone.
Deuxièmement, on créer un cercle, lui beaucoup plus petit, et on le transforme en MovieClip. On nomme son instance MCobjet.
Pour résumé on a 2 MovieClip :
- MCzone
- MCobjet

(Les fichiers sources seront bientot disponibles, ça sera plus facile avec les fichiers FLA).

ActionScript
On va donc créer 2 prototypes pour nos MovieClip.
Un prototype pour le faire bouger.
Un autre pour calculer son déplacement.

Pour la définition des prototypes, je vous laisse consulter l'aide de Flash.

ActionScript Code:
  1. MovieClip.prototype.vitesse = function(prop, pos, force) {
  2.       this["vitesse"+prop] = (pos-this[prop])/force;
  3.       return this["vitesse"+prop];
  4. };
  5.  
  6. MovieClip.prototype.mouvement = function(posX, posY, forceXY) {
  7.      this.onEnterFrame = function() {
  8.           this._x += this.vitesse("_x", posX, forceXY);
  9.           this._y += this.vitesse("_y", posY, forceXY);
  10.           delete this.enterFrame();
  11.      };
  12. };

Ensuite il ne nous reste plus qu'à faire bouger notre MCobjet en appelant sa métode mouvement.
Je veux faire bouger mon MCobjet sur mon MCzone, soit :
ActionScript Code:
  1. MCzone.onPress = function(){
  2.  this._parent.MCobjet.mouvement(this._xmouse, this._ymouse,5);
  3. }

et voilà....quand on click sur MCzone, MCobjet va se déplacer vers le point de Click.

Code complet
ActionScript Code:
  1. MovieClip.prototype.vitesse = function(prop, pos, force) {
  2.  this["vitesse"+prop] = (pos-this[prop])/force;
  3.  return this["vitesse"+prop];
  4. };
  5.  
  6. MovieClip.prototype.mouvement = function(posX, posY, forceXY) {
  7.  this.onEnterFrame = function() {
  8.   this._x += this.vitesse("_x", posX, forceXY);
  9.   this._y += this.vitesse("_y", posY, forceXY);
  10.   delete this.enterFrame();
  11.  };
  12. };
  13.  
  14.  
  15. MCzone.onPress = function(){
  16.  this._parent.MCobjet.mouvement(this._xmouse, this._ymouse,5);
  17. }

Bon code à tous
__________________
<- Pourquoi est la seule et vraie question ->

Dernière modification par eRom 23/12/2003 à 21h12.
Réponse avec citation