Très utile lorsque l'on réalise des animations
un peu complexes ou même des jeux, la fonction de
détection de collisions va nous permettre de détecter
et donc de pouvoir réagir lorsqu'un objet en rencontre
un autre au cours de son animation. Cette fonction s'appelle
hitTest( ) et s'utilise ainsi :
this.hitTest(_root.occurence) {
action
}
_root représente votre scène. Cette
ligne signifie que lorsque « l’occurrence »
va entrer avec en collision avec l'objet implémentant
cette méthode, action sera réalisée.
Examinons l'exemple suivant :
Faisons 2 clips :
- 1 contenant le dessin d'une balle
- 1 contenant une barre représentant un mur

Plaçons ensuite sur la scène 4 occurrences
de l'objet mur afin de réaliser un carré,
sorte de trinquet Basque! Ajoutons ensuite une occurrence
de la balle. On prendra soin de donner un nom (1)
à cette occurrence via les propriétés
:

A la frame 1 de la scène, nous allons initialiser
2 variables H et V : H=7; V=7;
Activons la balle, et ajoutons la suite d’instructions
suivante :
onClipEvent (enterFrame) { //Cette partie de code va
s'exécuter en boucle lors du chargement du clip.
this._x = this._x+_root.h; // root représente la
scène, root.h et root.v permet de récupérer
le contenu des variables H et V précédemment
déclarées. This représente l'accès
à l'objet lui même, c'est à dire, ici
, la balle et ses coordonnées.
this._y = this._y+_root.v;
}
Avec ce code nous créons une balle qui va de délacer
en diagonale vers le bas à droite.
Il nous reste à détecter la collision avec
chaque instance du mur et de modifier le déplacement
en conséquence :
Mur Gauche |
Mur Droit |
Mur Bas |
Mur Haut |
onClipEvent (enterFrame) {
if (this.hitTest(_root.balle)) {
_root.h = 5;
}
}
|
onClipEvent (enterFrame) {
if (this.hitTest(_root.balle)) {
_root.h = -5;
}
}
|
onClipEvent (enterFrame) {
if (this.hitTest(_root.balle)) {
_root.v = -5;
}
}
|
onClipEvent (enterFrame) {
if (this.hitTest(_root.balle)) {
_root.v = 5;
}
}
|
Et hop…le mouvement perpétuel est crée
!