Création d'interactivité avec ActionScript > Création d'interactivité complexe > Détection des collisions |
![]() |
Détection des collisions
La méthode hitTest
de l'objet MovieClip détecte les collisions dans une animation. Elle vérifie si un objet est entré en collision avec un clip et renvoie une valeur booléenne (true
ou false
).
Il existe deux situations où il peut être utile de savoir si une collision s'est produite : pour tester si l'utilisateur a atteint une zone statique précise de la scène, et pour déterminer si un clip en a atteint un autre. La méthode hitTest
permet de déterminer ces résultats.
Vous pouvez utiliser les paramètres de la méthode hitTest
pour définir les coordonnées x et y d'une zone de collision sur la scène ou utiliser le chemin cible d'un autre clip comme zone de collision. Lorsque vous définissez x et y, hitTest
renvoie true
si le point identifié par (x,y) n'est pas transparent. Si une cible est transmise à hitTest
, les cadres de délimitation des deux clips sont comparés. S'ils se chevauchent, hitTest
renvoie true
. Si les deux ne se coupent pas, hitTest
renvoie false
.
Placez la souris sur la forme de l'animation pour tester la collision. Les résultats de la méthode hitTest
sont renvoyés dans le champ de texte.
Vous pouvez également utiliser la méthode hitTest
pour tester une collision entre deux clips.
Pour tester la collision, faites glisser le clip de la voiture pour le faire entrer en contact avec le clip du parking. Les résultats de la méthode hitTest
sont renvoyés dans le champ de texte.
Les procédures suivantes indiquent comment détecter les collisions, en utilisant une voiture comme exemple.
Pour détecter la collision entre un clip et un point de la scène (voir shape_flag.fla) :
1 |
Sélectionnez un clip sur la scène. |
2 |
Créez un champ de texte dynamique sur la scène et entrez |
3 |
Choisissez Fenêtre > Actions pour ouvrir le panneau Actions si ce dernier n'est pas déjà visible. |
4 |
Dans la boîte à outils du panneau Actions, cliquez sur la catégorie Actions, puis sur Variables et double-cliquez sur |
hitTest(_root._xmouse, _root._ymouse, true) |
|
![]() |
Flash ajoute automatiquement le gestionnaire |
|
![]() |
5 |
Sélectionnez l'action |
6 |
Choisissez Contrôle > Tester l'animation et passez la souris sur le clip pour tester la collision. |
![]() |
La valeur |
|
![]() |
Pour détecter la collision entre deux clips (voir hit_test.fla) :
1 |
Faites glisser deux clips jusqu'à la scène et affectez-leur les noms d'occurrence |
2 |
Créez un champ de texte dynamique sur la scène et entrez |
3 |
Sélectionnez |
4 |
Pour appliquer le test |
_root.status=this.hitTest(_root. |
|
![]() |
Flash ajoute automatiquement le gestionnaire |
|
![]() |
5 |
Sélectionnez l'action |
6 |
Sélectionnez |
7 |
Pour appliquer le mouvement à la voiture, dans la boîte à outils Actions, cliquez sur la catégorie Actions, puis sur Contrôle sur les clips et double-cliquez sur |
8 |
Pour limiter le mouvement de la voiture, activez les options Verrouiller la souris au centre et Contraindre en rectangle, puis entrez 4 pour la gauche, 70 pour le haut, 396 pour la droite et 273 pour le bas. |
![]() |
Flash ajoute automatiquement le gestionnaire |
|
![]() |
9 |
Sélectionnez l'action |
![]() |
Le code devrait avoir cette forme : |
|
onClipEvent (mouseDown) { startDrag("", true, 4, 70, 396, 273); } |
|
![]() |
10 |
Pour arrêter la voiture, dans la boîte à outils Actions, cliquez sur la catégorie Actions, puis sur Contrôle sur les clips et double-cliquez sur |
![]() |
Flash ajoute automatiquement le gestionnaire |
|
![]() |
11 |
Sélectionnez l'action |
![]() |
Le code devrait avoir cette forme : |
|
onClipEvent (mouseDown) { startDrag("", true, 4, 70, 396, 273); } onClipEvent (mouseUp) { stopDrag(); } |
|
![]() |
12 |
Choisissez Contrôle > Tester l'animation et faites glisser le clip pour tester la détection de collisions. |
![]() |
Lorsque le cadre de délimitation de la voiture touche celui de la zone, l'état devient |
|
![]() |
Pour plus d'informations, consultez MovieClip.hitTest
dans le dictionnaire ActionScript.
![]() |