ActionScript 3 – Programmation séquentielle et orientée objet
52
btSuppression.addEventListener(MouseEvent.MOUSE_DOWN,retirerCache);
function retirerCache(evt:MouseEvent) {
tableJeu.removeChild(cache1);
tableJeu.removeChild(cache2);
tableJeu.removeChild(cache3);
}
Nous allons découvrir, dans un troisième et dernier exemple, une mauvaise surprise. Pour
mieux la comprendre examinons la signature de la méthode removeChild().
Observez bien le type d’information contenu entre les parenthèses ! La méthode prend en
paramètre le nom d’un objet d’affichage. Mais alors, lorsque nous programmons une
fonction de rappel (CallBack) qui fait référence à la propriété currentTarget pour identifier
un objet d’affichage à supprimer, comment préciser qu’il s’agit d’un objet d’affichage ?
Dans l’exemple ci-dessous, la ligne d’instruction ne peut pas être exécutée.
removeChild(evt.currentTarget);
Vous devez donc faire appel à la classe DisplayObject() pour préciser au compilateur que
le paramètre evt.currentTarget est bien un objet d’affichage.
removeChild(DisplayObject(evt.currentTarget));
Voici un exemple complet qui illustre notre propos.
Fichier de référence : Chapitre2/removeChild3.fla
var cache1:Carte;
var cache2:Carte;
var cache3:Carte;
cache1 = new Carte();
cache2 = new Carte();
cache3 = new Carte();
addChild(cache1);
addChild(cache2);
addChild(cache3);
cache1.x = illustrationTrain.x;
Figure 2-9
La méthode removeChild() prend pour paramètre un nom de type DisplayObject, c’est-à-dire un objet d’affichage
(ou celui d’un conteneur d’objets d’affichage).
Précédent

- 80/426

Suivant