Salut à tous,

aprés avoir, vainement, chercher une solution à mon problème je me suis résoud à demander un petit coup de main.

Comme le titre l'indique le souci vient de la méthode Tween (pour déplacer un clip vers un clic gauche de la souris).

Lorsque je clique sur le fond, mon clip "me" se déplace vers ce point. Il s'arrête (méthode Stop() ) s'il heurte le symbole "Caillou 1". Si on attends les 5s qui signale la fin du mouvement (60 images à 12fps) on peut repartir sans soucis. Par contre si on change de direction pour volontairement heurter le caillou avant que le mouvement initial ne soit fini là mon soucis voit le jour. Mon clip garde en mémoire le Tween malgrés l'appel à la méthode Stop(). Ainsi, juste aprés le choc il se déplace depuis la position qu'il avait lorsqu'on a changé de direction vers son ancien objectif.

Voici mon code en AS3

import fl.transitions.*;
import fl.transitions.easing.*;

var tempo1:Number;
var chocpasse:Boolean;
var mouvementx:Tween;
var mouvementy:Tween;


fond.addEventListener(MouseEvent.MOUSE_DOWN,deplacer);
but_att.addEventListener(MouseEvent.MOUSE_DOWN,attaquer);
//Because this is AS3 everything needs to be called through
//eventlisteners, so this first lin calls and listens for the clip
me.addEventListener(Event.ENTER_FRAME, stopTweens);

//here is our function, it is called at the beginning of the movie
function stopTweens(event:Event):void{

if (me.hitTestObject(Caillou1) && chocpasse==false) {
chocpasse = true;
mouvementx.stop();
mouvementy.stop();
//Ci aprés, 2 linstructions pour palier à un soucis: éviter de rester bloquer sur le caillou!
mouvementx.prevFrame();
mouvementy.prevFrame();
tempo1 = setInterval(afficher, 0);
}

}

function deplacer(evt:MouseEvent) {
clearInterval(tempo1);
this.but_att.visible = false;
if(chocpasse == true){
chocpasse=false;
}
mouvementx = new Tween(me,"x", Regular.easeOut, me.x, mouseX, 60, false);
mouvementy = new Tween(me,"y", Regular.easeOut, me.y, mouseY, 60, false);
tempo1 = setInterval(afficher, 5000);
}

function attaquer(evt:MouseEvent) {
attaque.x=me.x+20;
attaque.y=me.y+20;
}


function afficher(){
this.but_att.visible = true;
clearInterval(tempo1);
}

Voilà si jamais quelqu'un peut éclairer ma lanterne je lui en serais reconnaissant

Ica