Pour détecter les collisions en SA 3.0 nous disposons de deux fonctions hitTestPoint() et hitTestObject(). La première peut être précise et détecter la forme de l'objet alors que la seconde détecte seulement si les bounding box de chaque objet se superpose. Il existe diverses autres approches que vous trouverez sur ces liens.
- Corey O'Neil - Collision Detection Kit
- Adventures in ActionScrript - Actionscript 3 hitTestObject and Pixel Perfect Collision Detection
- Grant Skinner - Skinner collision detection in AS 3.0
Animation
Code
carre.addEventListener(Event.ENTER_FRAME,detecte_collision);
rond.addEventListener(Event.ENTER_FRAME,detecte_collision);
function detecte_collision(evt:Event):void {
if (evt.target.hitTestPoint(mouseX,mouseY,true)) {
sortie.text = "la souris touche " + evt.target.name
}
if (evt.target.hitTestObject(polygone)) {
sortie.text = "le polygone touche " + evt.target.name
}
}
polygone.addEventListener(MouseEvent.MOUSE_DOWN,ajoute_deplace)
polygone.addEventListener(MouseEvent.MOUSE_UP,retire_deplace)
function ajoute_deplace(evt:MouseEvent):void{
evt.currentTarget.addEventListener(Event.ENTER_FRAME,deplace)
}
function retire_deplace(evt:MouseEvent):void{
evt.currentTarget.removeEventListener(Event.ENTER_FRAME,deplace)
}
function deplace(evt:Event):void{
evt.currentTarget.x = mouseX
evt.currentTarget.y = mouseY
}






