10 septembre 2008

AS3 : Récupérer la frame d’un label

Récemment, j’ai été confronté à un manque de l’AS3. En effet, il est impossible de récupérer le numéro d’une frame à partir du nom d’un label.

as3

En clair, si un clip comporte 3 labels dans sa timeline, et que vous souhaitez récupérer la position de l’un de ces labels, la seule solution existante et de faire un gotoAndStop vers ce label et ensuite récupérer le numéro de frame avec la propriété currentLabel.

Si l’on prend notre clip possédants 3 labels (”init”, “over” et “out”) aux images 1, 5 et 10. Voici le code à mettre en œuvre pour récupérer le numéro de frame du label “out” dans une variable frame :

1
2
gotoAndStop("out");
var frame : uint = currentFrame;

Une solution bien pénible qui vous oblige à utiliser des gotoAndStop.

C’est pourquoi j’ai décidé de créer une petite classe FrameLabelTool, permettant de renvoyer le numéro de frame du label de votre choix.

Pour cela rien de plus simple, dans la classe liée à votre MovieClip (ou une classe supérieure), il vous suffit de faire appel à la méthode static getFrameByLabel de FrameLabelTool en lui passant au minimum deux arguments : le premier étant le tableau des FrameLabels du MovieClip, et le second le nom du label.

Pour récupérer le premier argument, à savoir le tableau contenants tous les labels du clip, là encore, rien de plus simple, puisqu’il s’agit de la variables currentLabelsde votre clip.

Reprenons notre premier exemple mais cette fois-ci avec la classe FrameLabelTool, le code à taper est désormais :

1
var  frame : uint = FrameLabelTool.getFrameByLabel(currentLabels, "out");

Et voilà ! Plus de gotoAndStop.

Enfin, j’ai ajouté un troisième argument booléen, pour les adeptes de la méthode addFrameScript et qui nécessite le numéro de frame - 1 (car la méthode addFrameScript compte les images à partir de 0 et non de 1) pour ajouter du code sur une frame. Par défaut cet argument est à false.

Dernier exemple, voici comment faire un addFrameScript (de la méthode “outScript”) sur le label “out” de notre clip :

1
addFrameScript(FrameLabelTool.getFrameByLabel(currentLabels, "out", true), outScript);

Ne me reste plus qu’à vous fournir la classe FrameLabelTool et à vous souhaiter un bon usage.

Commentaires

morphy - 18 août 2011

Bonjour,

y a-t-il une chance d’avoir accès à cette classe ? Le lien à l’air mort …

Merci.

Laisser un commentaire

Commentaire