CRÉATION D'UN MOUVEMENT ÉLASTIQUE

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 - 11 oct. 2004 à 10:54
ackan Messages postés 1 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 26 mars 2006 - 26 mars 2006 à 15:39
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/26727-creation-d-un-mouvement-elastique

ackan Messages postés 1 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 26 mars 2006
26 mars 2006 à 15:39
Sympas ce script allé j'apporte ma contribution en le relookant une peu et en ajoutant un élastique

-----------------------------------------------------------------
// Création d'un nouveau MovieClip vide qui permettra de tracer l'élastique
this.createEmptyMovieClip("line_mc",1);

// On cré l'occurence balle_mc du clip de la bibliothèque portant le nom de liaison balle
this.attachMovie("balle","balle_mc",2);

// On positionne le clip balle_mc
balle_mc._x = 380;
balle_mc._y = 210;

// On paramètre notre occurence balle_mc
balle_mc.friction = .9; // Paramètre de friction
balle_mc.ratio = .3; // Taux d'élasticité
balle_mc.speedX = 0; // Vitesse X
balle_mc.speedY = 0; // Vitesse Y
balle_mc.baseX = balle_mc._x; // Position de départ X
balle_mc.baseY = balle_mc._y; // Postion de départ Y

balle_mc.onPress = function() {
delete this.onEnterFrame;
this.startDrag();
this.onEnterFrame = function ()
{
// On trace une droite
line_mc.clear();
// On défini le style de tracé que l'on désire
line_mc.lineStyle(2,0xFFFFFF);
// On positionne notre point de départ
line_mc.moveTo(balle_mc.baseX,balle_mc.baseY);
// On trace l'élastique
line_mc.lineTo(balle_mc._x,balle_mc._y);
}
}

balle_mc.onRelease = function() {
delete this.onEnterFrame;
this.stopDrag();
this.onEnterFrame = function ()
{
// On trace une droite
line_mc.clear();
// On défini le style de tracé que l'on désire
line_mc.lineStyle(2,0xFFFFFF);
// On positionne notre point de départ
line_mc.moveTo(balle_mc.baseX,balle_mc.baseY);

// On calcul la nouvelle position de l'occurence balle_mc
this.speedX = (this.speedX * this.friction) + (this.baseX - this._x) * this.ratio;
this.speedY = (this.speedY * this.friction) + (this.baseY - this._y) * this.ratio;

// On repositionne l'occurence balle_mc
this._x += this.speedX;
this._y += this.speedY;

// On trace l'élastique
line_mc.lineTo(balle_mc._x,balle_mc._y);

// imite infèrieure de l'élasticité
if (Math.abs(this.speedX) < .01 && Math.abs(this.speedX) < .01) {
delete this.onEnterFrame;
trace("arrêt");
}
}
}

-------------------------------------------------------------------------
TMG Boby Messages postés 27 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 30 juin 2006
24 févr. 2006 à 12:21
Pour faire en sorte que le clip ne foire pas quand on reclique dessus ajoutez

delete this.onEnterFrame;

juste après la ligne "this.startDrag ();"
___________________________

ball_mc.friction = .9;
ball_mc.ratio = .3; //taux d'élasticité
ball_mc.speedX = 0; //vitesse X
ball_mc.speedY = 0; //vitesse Y
ball_mc.baseX = ball_mc._x; //base X de la balle
ball_mc.baseY = ball_mc._y; //base Y de la balle
ball_mc.onPress = function ()
{
this.startDrag ();
delete this.onEnterFrame;

};
ball_mc.onRelease ball_mc.onReleaseOutside function ()
{
this.stopDrag ();
this.onEnterFrame = function ()
{
this.speedX = (this.speedX * this.friction) + (this.baseX - this._x) * this.ratio;
this.speedY = (this.speedY * this.friction) + (this.baseY - this._y) * this.ratio;
this._x += this.speedX;
this._y += this.speedY;
};
};
___________________________
SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007
17 oct. 2004 à 15:52
Il faut que tu stoppes l'effet d'élastique lorsque tu déplace la balle. Sans sa, elle continu à bouger et l'evènement onRelease n'as pas lieu.
clemgraf Messages postés 14 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 14 avril 2007
17 oct. 2004 à 14:17
tu étires un fois ton bouton, tu laches il oscille mais aprés quand tu vas pour le ré-étiré il réagit seul dans meme me que tu ais cliqué.
Webix88 Messages postés 11 Date d'inscription dimanche 29 août 2004 Statut Membre Dernière intervention 28 octobre 2004
12 oct. 2004 à 15:20
Comment sa?
clemgraf Messages postés 14 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 14 avril 2007
12 oct. 2004 à 08:41
pk ça foire si tu réetire le bouTon elastique?
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
11 oct. 2004 à 10:54
Beau Tuto .. juste trés con d'avoir laissé l'anim en 12 Fps ...
Rejoignez-nous