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:
MovieClip.prototype.vitesse = function(prop, pos, force) {
this["vitesse"+prop] = (pos-this[prop])/force;
return this["vitesse"+prop];
};
MovieClip.prototype.mouvement = function(posX, posY, forceXY) {
this.onEnterFrame = function() {
this._x += this.vitesse("_x", posX, forceXY);
this._y += this.vitesse("_y", posY, forceXY);
delete this.enterFrame();
};
};
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:
MCzone.onPress = function(){
this._parent.MCobjet.mouvement(this._xmouse, this._ymouse,5);
}
et voilà....quand on click sur MCzone, MCobjet va se déplacer vers le point de Click.
Code complet
ActionScript Code:
MovieClip.prototype.vitesse = function(prop, pos, force) {
this["vitesse"+prop] = (pos-this[prop])/force;
return this["vitesse"+prop];
};
MovieClip.prototype.mouvement = function(posX, posY, forceXY) {
this.onEnterFrame = function() {
this._x += this.vitesse("_x", posX, forceXY);
this._y += this.vitesse("_y", posY, forceXY);
delete this.enterFrame();
};
};
MCzone.onPress = function(){
this._parent.MCobjet.mouvement(this._xmouse, this._ymouse,5);
}
Bon code à tous