ActionScript 3 – Programmation séquentielle et orientée objet
102
Fichier de référence : Chapitre4/hittest2.fla
piece1.addEventListener(MouseEvent.MOUSE_DOWN,pieceMobile);
piece1.addEventListener(MouseEvent.MOUSE_UP,pieceFixe);
function pieceMobile(evt:MouseEvent) {
evt.currentTarget.startDrag();
}
function pieceFixe(evt:MouseEvent) {
stopDrag();
if (evt.currentTarget.hitTestObject(zoneRelache)) {
evt.currentTarget.x=zoneRelache.x;
evt.currentTarget.y=zoneRelache.y;
piece1.removeEventListener(MouseEvent.MOUSE_DOWN,pieceMobile);
}
}
Observez bien la fonction pieceFixe() dans laquelle nous avons effectué un test qui
détecte une éventuelle collision entre l’occurrence qui fait l’objet du déplacement
(evt.currentTarget) et une autre intitulée zoneRelache. Si tel est le cas, nous plaçons précisément l’occurrence relâchée aux mêmes coordonnées x et y de l’instance zoneRelache.
Lorsque l’occurrence est à sa place, nous ne souhaitons plus qu’elle puisse être déplacée
à nouveau. Nous terminons donc le script par une désactivation de l’écouteur qui fait
appel à l’événement MOUSE_DOWN.
Pour ce troisième et dernier exemple, nous allons chercher à vous expliquer comment le
nom de l’instance figurant dans les parenthèses de la fonction hitTest() doit être écrit s’il
est amené à changer. En parcourant rapidement le script ci-dessous, vous découvrirez
que nous avons effectué une boucle pour placer plusieurs instances sur la scène. Nous ne
pouvons donc pas utiliser la même référence, aussi bien pour le nom d’occurrence placé
avant la fonction que pour celui situé après.
Fichier de référence : Chapitre4/hittest3.fla
for (var i:Number=0; i<=10; i++) {
var unPion:Jeton = new Jeton();
var uneZoneDeRelache:ZoneDeRelache = new ZoneDeRelache();
unPion.addEventListener(MouseEvent.MOUSE_DOWN,pieceMobile);
Remarque
Si vous ne savez pas gérer le glisser-déposer d’une occurrence sur la scène, consultez le développement
précédent dédié à cette technique avant de poursuivre la lecture des lignes qui vont suivre.
Remarque
Si vous ne savez pas encore effectuer une boucle en programmation avec un for(), n’abordez pas ce
troisième exemple et reprenez-le lorsque vous aurez lu le chapitre 10.
102
Fichier de référence : Chapitre4/hittest2.fla
piece1.addEventListener(MouseEvent.MOUSE_DOWN,pieceMobile);
piece1.addEventListener(MouseEvent.MOUSE_UP,pieceFixe);
function pieceMobile(evt:MouseEvent) {
evt.currentTarget.startDrag();
}
function pieceFixe(evt:MouseEvent) {
stopDrag();
if (evt.currentTarget.hitTestObject(zoneRelache)) {
evt.currentTarget.x=zoneRelache.x;
evt.currentTarget.y=zoneRelache.y;
piece1.removeEventListener(MouseEvent.MOUSE_DOWN,pieceMobile);
}
}
Observez bien la fonction pieceFixe() dans laquelle nous avons effectué un test qui
détecte une éventuelle collision entre l’occurrence qui fait l’objet du déplacement
(evt.currentTarget) et une autre intitulée zoneRelache. Si tel est le cas, nous plaçons précisément l’occurrence relâchée aux mêmes coordonnées x et y de l’instance zoneRelache.
Lorsque l’occurrence est à sa place, nous ne souhaitons plus qu’elle puisse être déplacée
à nouveau. Nous terminons donc le script par une désactivation de l’écouteur qui fait
appel à l’événement MOUSE_DOWN.
Pour ce troisième et dernier exemple, nous allons chercher à vous expliquer comment le
nom de l’instance figurant dans les parenthèses de la fonction hitTest() doit être écrit s’il
est amené à changer. En parcourant rapidement le script ci-dessous, vous découvrirez
que nous avons effectué une boucle pour placer plusieurs instances sur la scène. Nous ne
pouvons donc pas utiliser la même référence, aussi bien pour le nom d’occurrence placé
avant la fonction que pour celui situé après.
Fichier de référence : Chapitre4/hittest3.fla
for (var i:Number=0; i<=10; i++) {
var unPion:Jeton = new Jeton();
var uneZoneDeRelache:ZoneDeRelache = new ZoneDeRelache();
unPion.addEventListener(MouseEvent.MOUSE_DOWN,pieceMobile);
Remarque
Si vous ne savez pas gérer le glisser-déposer d’une occurrence sur la scène, consultez le développement
précédent dédié à cette technique avant de poursuivre la lecture des lignes qui vont suivre.
Remarque
Si vous ne savez pas encore effectuer une boucle en programmation avec un for(), n’abordez pas ce
troisième exemple et reprenez-le lorsque vous aurez lu le chapitre 10.
