Le déplacement d’un clip à une nouvelle image est une opération simple. Il suffit d’appeler
gotoAndPlay()
ou
gotoAndStop()
en spécifiant le numéro de l’image cible comme paramètre. Vous pouvez également transmettre une chaîne correspondant au nom de l’étiquette d’image. Il est possible d’attribuer une étiquette à toute image du scénario. Pour ce faire, sélectionnez une image du scénario, puis tapez un nom dans le champ Etiquette d’image de l’Inspecteur des Propriétés.
L’utilisation des étiquettes d’image plutôt que des numéros présente des avantages évidents pour créer un clip complexe. Si le nombre d’images, de calques et d’interpolations d’une animation est élevé, envisagez d’étiqueter les images importantes de manière évocatrice, en faisant référence aux changements de comportement dans le clip (par exemple « départ », « marche » ou « course »). Cette technique permet d’améliorer la lisibilité du code et offre plus de souplesse, puisque les appels ActionScript destinés à une image étiquetée pointent sur une référence uniquement (l’étiquette) plutôt que sur une image numérotée. Si vous décidez par la suite de déplacer un segment de l’animation vers une autre image, il ne sera pas nécessaire de modifier le code ActionScript si vous conservez les mêmes étiquettes pour toutes les images au nouvel emplacement.
Pour représenter des étiquettes en code, ActionScript 3.0 comporte la classe FrameLabel. Chaque occurrence de cette classe représente une étiquette d’image unique, et possède une propriété
name
qui représente le nom de l’étiquette tel qu’il a été indiqué dans l’Inspecteur des Propriétés, ainsi qu’une propriété
frame
qui représente le numéro de l’image pour laquelle l’étiquette est placée dans le scénario.
Pour permettre d’accéder aux occurrences de FrameLabel associées à une occurrence de clip, la classe MovieClip comporte deux propriétés qui renvoient directement des objets FrameLabel. La propriété
currentLabels
renvoie un tableau composé de tous les objets FrameLabel présents sur l’ensemble du scénario d’un clip. La propriété
currentLabel
renvoie une chaîne contenant le nom de l’étiquette d’image trouvée récemment sur le scénario.
Supposons que vous ayez créé un clip nommé
Robot
et que vous ayez étiqueté les différents états de l’animation. Vous pouvez définir une condition pour vérifier la propriété
currentLabel
afin d’accéder à l’état actuel de
Robot
, comme dans le code suivant :
if (robot.currentLabel == "walking")
{
// do something
}
Flash Player 11.3 et AIR 3.3 ont ajouté l’événement
frameLabel
à la classe FrameLabel. Vous pouvez affecter un gestionnaire d’événement à l’occurrence de FrameLabel qui représente l’étiquette d’une trame. L’événement est distribué lorsque la tête de lecture accède à la trame.
L’exemple suivant crée une occurrence de FrameLabel pour la seconde étiquette de trame dans l’objet Array des étiquettes de trames du MovieClip. Il enregistre ensuite un gestionnaire d’événement pour l’événement
frameLabel
:
var myFrameLabel:FrameLabel = robot.currentLabels[1];
myFrameLabel.addEventListener(Event.FRAME_LABEL, onFrameLabel);
function onFrameLabel(e:Event):void {
//do something
}