AS3 Quel est l'evenement envoyé par un swf loadé à la fin de sa timeline ?
cs_ourso
Messages postés92Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention 5 décembre 2010
-
23 déc. 2008 à 23:33
ehryx
Messages postés1Date d'inscriptionlundi 16 février 2009StatutMembreDernière intervention19 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
A voir également:
AS3 Quel est l'evenement envoyé par un swf loadé à la fin de sa timeline ?
ehryx
Messages postés1Date d'inscriptionlundi 16 février 2009StatutMembreDernière intervention19 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...