Bonjour,
J'ai un petit bug sur ce script que je ne comprend pas. Celui-ci bug si la case que j'essaye de déplacer se trouve sous une case existante.
Pour l'exemple, si je déplace la case rouge sur mon centre 1, et la bleu ensuite, ça fonctionne. Par contre si je déplace la case bleu sur mon centre 1 et l'orange ensuite ça bug car l'orange se trouve en dessous.
Avez-vous une idée pour régler celà?
Voici mon code, un fla cs5 et un swf.
Merci bonne fin de journée !!
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
//Position d'origine des carré
var startX:Number = 696.1;
var startY:Number = 147;
//Vérification si les centres sont libres ou pas
centre1.libre = true;
centre2.libre = true;
//Carrés
p1.addEventListener(MouseEvent.MOUSE_DOWN,appuie);
p2.addEventListener(MouseEvent.MOUSE_DOWN,appuie);
p3.addEventListener(MouseEvent.MOUSE_DOWN,appuie);
p4.addEventListener(MouseEvent.MOUSE_DOWN,appuie);
var verificationC1:Boolean = false;
var verificationC2:Boolean = false;
//Mouse Down
function appuie(evt:MouseEvent) {
p1.addEventListener(MouseEvent.MOUSE_UP,relache);
p2.addEventListener(MouseEvent.MOUSE_UP,relache);
p3.addEventListener(MouseEvent.MOUSE_UP,relache);
p4.addEventListener(MouseEvent.MOUSE_UP,relache);
evt.currentTarget.startDrag();
if(evt.currentTarget.centre != null){
evt.currentTarget.centre.libre = true;
evt.currentTarget.centre = null;
//Si le centre est null, la vérification est fause
verificationC1 = false;
verificationC2 = false;
}
}
//Mouse Up
function relache(evt:MouseEvent) {
evt.currentTarget.stopDrag();
removeEventListener(MouseEvent.MOUSE_UP,relache);
//Collision Centre1
if (evt.currentTarget.hitTestObject(centre1) ) {
if(centre1.libre){
centre1.libre = false;
evt.currentTarget.x = 266;
evt.currentTarget.y = 153,25;
evt.currentTarget.centre = centre1;
verificationC1 = true;
}else{
evt.currentTarget.x = startX;
evt.currentTarget.y = startY;
}
}
//Collision Centre2
if (evt.currentTarget.hitTestObject(centre2)) {
if(centre2.libre){
centre2.libre = false;
evt.currentTarget.x = 376,15;
evt.currentTarget.y = 153,35;
evt.currentTarget.centre = centre2;
verificationC2 = true;
}else{
evt.currentTarget.x = startX;
evt.currentTarget.y = startY;
}
}
}
//vérification finale
bt_verif.buttonMode=true;
bt_verif.addEventListener(MouseEvent.CLICK, resultat);
function resultat(e:MouseEvent) {
if (verificationC1==true && verificationC2==true)
{
trace("C'est juste");
} else
{
trace("C'est faux");
}
} |