Probleme d'affichage de clip imbriqué dans une boucle
cs_Papillonvole
Messages postés12Date d'inscriptionmardi 17 décembre 2002StatutMembreDernière intervention 5 août 2008
-
3 août 2008 à 22:22
cs_Papillonvole
Messages postés12Date d'inscriptionmardi 17 décembre 2002StatutMembreDernière intervention 5 août 2008
-
5 août 2008 à 11:00
Je ne parviens pas à imbriquer le code as d'un clip dans une boucle qui en change les paramètres.
Le but: lorsque la souris passe sur le clip, celui ci se met à tourner sur son axe vertical pendant un temps fixé. (_xscale est utilisé pour réduire et augmenter le clip).
En fait lorsque le code est imbriqué, AS calcule tous les résultats de la boucle et affiche seulement le résultat final. Comment forcer l'affichage du clip pour chaque résultat ?
Papillon
A voir également:
Probleme d'affichage de clip imbriqué dans une boucle
et tu voudrqis qfficher le clip a chaque passage de la boucle ? Si c'est le cas c'est impossible car flash attent d'avoir fini le code de la frame en cour avant d'afficher le resultat. Utilise plutot un Timer ou l'evenemet ENTERFRAME
cs_Papillonvole
Messages postés12Date d'inscriptionmardi 17 décembre 2002StatutMembreDernière intervention 5 août 2008 4 août 2008 à 10:23
Oui c'est exactement ca que je veux faire.
J'ai essayé avec un timer du style for(var t:1; t<10000; t++) mais la aussi, la pause ne se produit qu'en un bloc avant l'affichage final.
J'ai juste un problème avec enterFrame pour ralentir le clip et en sortir.
Je voulais justement eviter enterFrame aussi pour la surcharge memoire et faire tout en AS sur une seule frame, plutôt que d'utiliser des gotoAndPlay. Car je veux adapter cette fonction a plusieurs clip adjacent. (environ 100).
L'effet voulu est un peu comme quand on passe sa main sur les rouleaux de transport à la caisse d'un super marché. ;-) Ca tourne les uns après les autres et s'arrête pareil en ralentissant.
stefbuet
Messages postés576Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention12 mai 2009 4 août 2008 à 20:04
Salut, cette class te permet de faire tourner ton clip (Sprite) pendant 5s via un Timer. Il suffit de donner comme nom de liaison a ton clip mySprite et de faire dans ton code :
var clip:mySprite=new mySprite();
addChild(clip);
stefbuet
Messages postés576Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention12 mai 2009 5 août 2008 à 09:45
Salut,
par contre en relisant ton premier post je vois que tu parle de _xscale et non de scaleX, et donc d'AS2. L'exemple de class que je t'ais montre est en AS3.
Tu peut faire une class equivalente en AS2 mais la tu devras forcement utiliser l'Enterframe, car la class Timer n'existe pas en AS2.
stefbuet
Messages postés576Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention12 mai 2009 5 août 2008 à 10:06
Non pas depuis Flash MX (flash version 6 ou 7 pour flash MX 2004)
L'apparition de l'AS3 dans l'IDE de Flash fue pour la version 9, c'est a dire Flash CS3.
Tu peux telecharger une version d'essais de 30 jours chez adobe.com...
Autrement, tu peux tres bien le faire en AS2 :)
Voici un exemple qui utilise un setInterval (similaire aux Timer de l'AS3) :
//////////////////////////////////////
class RotatingClip {
private var id:Number;
private var clip:Movieclip;
private var rotationNumber;
function rotationClip($clip:Movieclip) {
if(($clip==undefined)||($clip==null)) {
trace{"Erreur, clip non valide");
else {
clip=$clip;
rotationNumber=0;
id=setInterval(updateClip, 100); //toutes les 100ms
}
}//fin constructeur
private function updateClip():Void {
if(rotationNumber>10) {//on arrete apres 10 tours
clearInterval(id);
}
else {
if(Math.round(rotationNumber/2)==rotationNumber/2) {
//si c'est un nombre pair :
if(clip._xscale<100) {
clip._xscale+=0.5;
else {
rotationNumber++;
}
}
else { //nombre impair :
if(clip._xscale>0) {
clip._xscale-=0.5;
}
else {
rotationNumber++;
}
}//fin nombre impaire
}//fin on est dans les 10 premiers tours
}//fin function update
}//fin class
//////////////////////////////
Voila, sa devrais marcher, tu creer ton clip, tu lui donne un nom d'occurence, puis dans le code sur la frame ou le clip est tu met :
var myRotater=new RotatingClip(nomOccurenceClip);
En esperant que cette fois les saut de ligne marcherons (j'ai essayer une nouvelle technique! ^^), @+++
stefbuet
Messages postés576Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention12 mai 2009 5 août 2008 à 10:43
Si cela resoud ton probleme n'oublie pas de mettre ce post (de la class) en post resolu pour que les personne qui ont le meme probleme puissent trouver plus facilement de l'aide ;) @+++