ActionScript 3.0, l'essentiel sous la main Adobe Flash Accueil
Fiches
Boutique
Contact
Gérer la collision entre deux objets
Nous allons voir ici comment gérer la collision entre deux clip. Pour cela, nous allons utiliser la fonction hitTestObject. Ici, nous avons deux clips ayant pour noms d'occurence monObjet1 et monObjet2. Afin de détecter si monObjet1 est en collision avec monObjet2, on écrit :

if(monObjet1.hitTestObject(monObjet2)) //Test si 'monObjet1' est en collision avec 'monObjet2'
{
//Collision détecté
}

Dans l'exemple qui suit, on drag&drop monObjet1 par dessus monObjet2 en détectant lorqu'ils se superpausent. Créez deux clips et donnez leurs un nom d'occurence : monObjet1 et monObjet2.

Ensuite, mettez le code suivant sur une image clé vide :

//Imports Flash
import flash.events.Event;
import flash.events.MouseEvent;

function collision(e:Event):void
{
if(monObjet1.hitTestObject(monObjet2)) //Test si 'monObjet1' est en collision avec 'monObjet2'
{
monObjet2.gotoAndStop(2);
}
else //Sinon, il n'y a pas de collision
{
monObjet2.gotoAndStop(1);
}
}
addEventListener(Event.ENTER_FRAME, collision);

//Déplacement du cube bleu
function deplacementON(e:MouseEvent):void
{
addChild(monObjet1); //Met au premier plan l'objet saisie 'monObjet'
monObjet1.startDrag(); //active le déplacement de l'objet 'monObjet'
}

function deplacementOFF(e:MouseEvent):void
{
monObjet1.stopDrag(); //désactive le déplacement de l'objet 'monObjet'
}

monObjet1.addEventListener(MouseEvent.MOUSE_DOWN, deplacementON);
monObjet1.addEventListener(MouseEvent.MOUSE_UP, deplacementOFF);

ATTENTION : Le gros inconvéniant de cette fonction, c'est qu'elle ne gère que les espaces rectangulaires. Son utilisation reste donc très limité, surout si vous cherchez quelque chose de précis.

Aperçus & Sources : (Flash CS4)
Commentaire(s)
Aucun.