AS3 Quel est l'evenement envoyé par un swf loadé à la fin de sa timeline ?

cs_ourso Messages postés 92 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 5 décembre 2010 - 23 déc. 2008 à 23:33
ehryx Messages postés 1 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 19 février 2009 - 19 févr. 2009 à 09:10
Salut,
Je taffe sur une anim d'intro, et j'ai besoin d'un évènement lorsque le film se finit... Or je n'ai pas accès au fla, mais je suis sur qu'il doit bien envoyer un event ?
Merci d'avance

Steph

1 réponse

ehryx Messages postés 1 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 19 février 2009
19 févr. 2009 à 09:10
Je suis en train de bosser sur la même problématique et c'est pas vraiment évident... Le Flash ne renvoie PAS d'évènement, mais depuis un autre flash, et s'ils sont dans la même version d'actionscript (as3 ne peut pas accéder à la timeline d'une anim en as2), tu peux voir à quelle frame en est le flash en cours de lecture. Alors seulement, tu pourras utiliser ton flash "conteneur" pour réagir en renvoyant des infos à javascript (c'est faisable mais pas prévu dans mon script).

En résumé, utiliser Loader() pour charger ton .swf, et quand il est complètement chargé (car petit rappel, le chargement est asynchrone), accéder à ses propriétés.
Chez moi ça donne :

var ldr:Loader = new Loader();
var context = new LoaderContext();
Loader();
var container:MovieClip = new MovieClip();
addChild(container);
var request:URLRequest = new URLRequest(une_url);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,complet);
ldr.load(request,context);
container.addChild(ldr);

function complet(pEvt:Event):void{
var timeline = pEvt.currentTarget.content;
);
trace(timeline.totalFrames);
trace(timeline.currentFrame);

}

Voilà, et ça n'est pas encore suffisant (!) pour détecter la fin du flash, il faut encore créer un évènement 'maison' qui détecte quand totalFrames == currentFrame et réagit en envoyant des infos à js via Externalinterface.
Inutile de préciser que si tu peux modifier ton flash en accédant au .fla pour mettre l'appel javascript à la fin de l'animation, tu vas t'économiser de longues heures de travail...
Et si l'objet timeline, dans mon exemple, se révèle être de type AVM1Movie, c'est que ton .swf est en as2 et que donc ça ne marche pas...

Bref c'est tout sauf simple.
0
Rejoignez-nous