Macromadia FLASH
Chapitre 1. Qu'est-ce donc
Chapitre 2. Le vocabulaire
Chapitre 3. 3 Interface de travail
Chapitre 4. Les palettes
Chapitre 5. Exemples simples
Chapitre 6. Les actions scripts
Chapitre 7. Propriétés des clips
Chapitre 8. Détection des collisions (exo9.fla)
Chapitre 9. Détection de - clics souris - et duplication de dessins (exo10.fla)
Chapitre 10. Déplacement interactifs de clips (exo11.fla)
Chapitre 11. Déplacement dans un clip (exo12.fla)
Chapitre 12. Gestion de l_interactivité
Chapitre 13. Composants d_interface (exo16.fla)
Chapitre 14. Gestion des variables par fichiers
Chapitre 15. Conclusion
Chapitre 16. Liste des exercices
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

Chapitre 8. Détection des collisions (exo9.fla)

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 !

Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante