Pourquoi mon swf chargé s'arrête-t-il quand j'interagis avec lui ?

Résolu
jcsydney Messages postés 22 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 24 novembre 2009 - 19 nov. 2009 à 14:20
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011 - 24 nov. 2009 à 10:18
Bonjour

J’ai deux animations ultra basiques en AS3 (faites sous Flash CS3).
- La première (animation chargée.swf) ne contient qu’une bête animation graphique (une simple interpolation de mouvement sur un clip dont le nom d’occurrence est "vert").
- La seconde ne contient que le code ci-dessous.

var chargeur:Loader = new Loader();
var adresse:URLRequest = new URLRequest("animation chargée.swf");
chargeur.load(adresse);
addChild(chargeur);
stage.addEventListener(MouseEvent.MOUSE_DOWN,disparaitre);
function disparaitre(evt:MouseEvent)
{
MovieClip(chargeur.content).vert.alpha -= 0.3;
// ==> le clip Vert s'arrête !!! pourquoi ? En AS1, il continuait sa course.
}

Ma question est : pourquoi le fait de demander au clip "vert", qui a été chargé dans "animation chargée.swf", arrête son interpolation de mouvement ??? Il change bien son alpha comme prévu, mais en AS1 il aurait continué son interpolation en même temps. Pourquoi en AS3 ça ne le fait plus ? Une erreur de ma part ou faut-il faire cela différemment en AS3 ?

Merci par avance.

19 réponses

Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
24 nov. 2009 à 10:18
Désolé, je voulais dire MovieClip :-)


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
3
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
19 nov. 2009 à 17:07
Hello,

il faut attendre que tout soit chargé avant d'intéragir avec ton clip chargé.

var chargeur:Loader = new Loader();
var adresse:URLRequest = new URLRequest("animation chargée.swf");
chargeur.load(adresse);

addChild(chargeur);

chargeur.addEventListener(Event.COMPLETE, chargeComplete);

function chargeComplete(e:Event):void
{
    chargeur.removeEventListener(Event.COMPLETE, chargeComplete);
    stage.addEventListener(MouseEvent.MOUSE_DOWN,disparaitre);
}

function disparaitre(evt:MouseEvent)
{
    MovieClip(chargeur.content).vert.alpha -= 0.3;
} 


A+

-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
jcsydney Messages postés 22 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 24 novembre 2009
19 nov. 2009 à 17:35
En effet, oubli de ma part :-( MAIS maintenant, le clic ne produit plus rien ! :-( J'ai mis un trace ("chargée"); à la première ligne de chargeComplete, et cette trace n'apparaît jamais, comme si le swf n'était jamais totalement chargé. Pourtant, ce swf est tout ce qu'il y a de simple: un seul calque avec une seule interpolation, et pas de code.
Qu'est-ce que j'ai oublié encore ???

function chargeComplete(e:Event):void
{
trace("chargée");

chargeur.removeEventListener(Event.COMPLETE, chargeComplete);
stage.addEventListener(MouseEvent.MOUSE_DOWN,disparaitre);
}
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
19 nov. 2009 à 17:49
Essaie de changer le nom de ton swf :
new URLRequest("animation-chargée.swf");



-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jcsydney Messages postés 22 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 24 novembre 2009
20 nov. 2009 à 08:48
J'ai testé, et j'ai même mis un nom plus simple "charge.swf" pour être sûr de ne pas avoir de pb avec les accents, espaces ou autres, mais rien à faire, charge.swf se joue bien, mais le clic sur la scène ne produit aucun changement sur le clip contenu dans charge. Une explication à ça ? ou bien peut-être un exemple qui fonctionne du même genre ?
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
20 nov. 2009 à 09:13
MovieClip(chargeur.content).vert ne devient pas en alpha 0.3 ?



-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
jcsydney Messages postés 22 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 24 novembre 2009
20 nov. 2009 à 10:47
J'ai ajouté un bouton sur la scène qui charge le swf, et j'ai ajouté le code :
bouton.addEventListener(MouseEvent.MOUSE_DOWN,disparaitre);


Quand je mets ce code en dehors de chargeComplete, le clip change son alpha mais il s'arrête encore, et si je mets le code dans chargeComplete, comme précédemment, on ne rentre jamais dans cette fonction, et le bouton ne provoque aucun résultat (pas de changement d'alphe, et le clip continue à jouer).

C'est prise de tête tout ça...
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
20 nov. 2009 à 12:16
Oups,

c'est pas
chargeur.addEventListener(Event.COMPLETE, chargeComplete);


mais
chargeur.contentLoaderInfo.addEventListener(Event.COMPLETE, chargeComplete);


A+

-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
jcsydney Messages postés 22 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 24 novembre 2009
20 nov. 2009 à 14:48
Avec cette nouvelle modif, on passe bien dans le "complete", mais le clip s'arrête encore (et son alpha change). Je suis revenu à mon point de départ.

function chargeComplete(e:Event):void
{
trace("chargée");
bouton.addEventListener(MouseEvent.MOUSE_DOWN,disparaitre);
chargeur.contentLoaderInfo.removeEventListener(Event.COMPLETE, chargeComplete);
stage.addEventListener(MouseEvent.MOUSE_DOWN,disparaitre);
}

function disparaitre(evt:MouseEvent)
{
MovieClip(chargeur.content).rotation += 3;
MovieClip(chargeur.content).vert.alpha -= 0.3;
}


var chargeur:Loader = new Loader();
var adresse:URLRequest = new URLRequest("chargee.swf");

chargeur.contentLoaderInfo.addEventListener(Event.COMPLETE, chargeComplete);
chargeur.load(adresse);

addChild(chargeur);
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
20 nov. 2009 à 15:06
Qu'entend tu pas "mais le clip s'arrête encore". Que veut tu lui faire exactement ?


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
jcsydney Messages postés 22 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 24 novembre 2009
20 nov. 2009 à 18:39
- dans "chargee.swf", le clip "vert" se déplace grâce à une interpolation de mouvement que j'ai créée directement dans le scénario. Pour ça, j'ai créé deux images clés + interpolation de mouvement entre ces deux images clés. Ca fait juste déplacer le clip "vert" de en haut à gauche vers en bas à droite. Très très simple donc.
- dans "animation qui charge", avec le code que j'ai donné précédemment, je voudrais envoyer un message à "chargee.swf" pour dire au clip vert de devenir + transparent, tout en continuant son interpolation de mouvement. En AS1, je torchais ça en deux lignes et c'était cool. Je m'arrache les cheveux pour faire ça en AS3. D'après le code ci-dessus, ça devrait marcher, non ? Pourquoi MovieClip(chargeur.content).vert.alpha -= 0.3 arrête l'interpolation du clip "vert" alors ?
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
20 nov. 2009 à 21:30
Il faut que tu mettes l'interpolation de ton clip "vert" dans un container.


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
jcsydney Messages postés 22 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 24 novembre 2009
22 nov. 2009 à 10:07
J'ai essayé et ça ne marche pas. Dans chargee.fla, j'ai créé un sprite, auquel j'ai ajouté le clip, et j'ai fait afficher le sprite avec addChild, mais du coup le clip n'apparaît plus dans l'animation chargee.
- Peut-on ajouter une interpolation (comme dans mon cas créée directement dans le scénario) dans un sprite par programmation ? Et surtout, je ne vois pas l'intérêt de faire ça puisque mettre mon clip dans un sprite ne donne rien de plus qu'un clip animé mis sur la scène.
- Par ailleurs, faire cette manip implique de faire changer toutes les animations qui auraient été créées autrefois et qu'on voudrait charger dynamiquement, pas cool.
- enfin, pour tester, j'ai ajouter vert.vitesse 10 dans chargée.fla , et avec le code ci-dessous, "animation qui charge" affiche bien la valeur 10 pour vert.vitesse. Le chemin est donc OK, et c'était déjà vérifié avec vert.alpha .... .

function chargeComplete(e:Event):void
{
trace("chargée");
//trace(MovieClip(chargeur.content).vert.vitesse);
bouton.addEventListener(MouseEvent.MOUSE_DOWN,disparaitre);
chargeur.contentLoaderInfo.removeEventListener(Event.COMPLETE, chargeComplete);
stage.addEventListener(MouseEvent.MOUSE_DOWN,disparaitre);
}

function disparaitre(evt:MouseEvent)
{
MovieClip(chargeur.content).rotation += 3;
//MovieClip(chargeur.content).vert.alpha -= 0.3;
trace(MovieClip(chargeur.content).vert.vitesse);

}


var chargeur:Loader = new Loader();
var adresse:URLRequest = new URLRequest("chargee.swf");

chargeur.contentLoaderInfo.addEventListener(Event.COMPLETE, chargeComplete);
chargeur.load(adresse);

addChild(chargeur);


Prenons le problème à l'envers peut-être. Si tu avais une animation swf sans aucun code dedans, mais juste un clip qui a une interpolation de mouvement dans le scénario de l'animation, comment ferais-tu pour la charger dans un autre swf et modifier l'alpha de ce clip ?
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
22 nov. 2009 à 12:37
Comme je te l'ai dis, je créerait un sprite "myClip" sur la scene et dedans je ferais mon interpolation de mouvement. Car si tu fais l'interpolation directement sur la scene pour myClip, l'alpha de marchera pas car ecrasé par l'interpolation.


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
jcsydney Messages postés 22 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 24 novembre 2009
23 nov. 2009 à 15:42
J'ai fait ça mais ça arrête quand même l'interpolation. Pas grave, je vais faire autrement en créant des fonctions que j'appellerai depuis l'autre swf.
Merci pour ton aide.
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
23 nov. 2009 à 16:09
Moi sa marche :
http://www.megaupload.com/?d=58YL3HI5


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
jcsydney Messages postés 22 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 24 novembre 2009
24 nov. 2009 à 09:50
Explique-moi comment tu fais. Moi, dans chargee.fla, j'ai créé un Sprite dans la bibliothèque, et j'y ai inséré les images de l'interpolation. Ensuite, j'ai fait un new sur ce sprite et je l'ai ajouté à la scène. Mais à la compilation, Flash me jette car un Sprite ne peut pas contenir des images avec du code (par exemple un gotoAndPlay(2) à la fin du scénario.
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
24 nov. 2009 à 09:59
Normal car un Sprite est équivalent à un MovieClip sauf que Sprite n'a pas de scenario donc toutes les methode de scenario ne fonctionne pas pour les Spirte (play, pause, nextFrame, prevFrame, gotoAndPlay, gotoAndStop ...)


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
jcsydney Messages postés 22 Date d'inscription jeudi 6 janvier 2005 Statut Membre Dernière intervention 24 novembre 2009
24 nov. 2009 à 10:12
Oui, je sais, c'est pour ça que je voulais savoir comment tu as fait pour que ça marche puisque tu as écrit : "Comme je te l'ai dis, je créerait un sprite "myClip" sur la scene et dedans je ferais mon interpolation de mouvement."
0
Rejoignez-nous