Forums Développement Multimédia

Aller au contenu

pb avec setinterval

CODE Actionscript

13 réponses à ce sujet

#1 abel.thorne

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 59 messages

Posté 17 January 2003 - 14:13 PM

Toujours avec mes problèmes de temporisation et de lecture d'anim :wink:

J'ai un problème avec la fonction setInterval : j'essaie de faire en sorte que mon anim ne se lise pas manuellement mais que toutes les n secondes elle avance d'une frame.

J'ai essayé le code suivant dans la première image de l'anim (pour un essai de pause de 4 secondes) :

_root.onEnterframe=function(){
_root.stop();
setInterval(function(){_root.gotoAndStop(_root._currentframe+1);},4000);
}

Le problème est que quand je lance l'anim il y a bien une pause de 4 sec. mais ensuite l'anim se déroule normalement (comme si j'avais mis un gotoAndPlay au lieu d'un gotoAndStop), elle ne fait pas une pause de 4 sec. à chaque frame.

Qu'est-ce que je fais comme erreur ?

Il faut peut-être qu'à chaque frame de l'anim j'ajoute une action _root.stop() ? ou alors il faut que je mette le code ailleurs (dans un clip qui serait dans la scène ?)

#2 ekameleon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 20167 messages

Posté 17 January 2003 - 14:16 PM

un setInterval remplace onEnterFrame .. du coup c'est TOTALEMENT inutile de mettre une boucle dans une autre wink.gif
CODE


GOTO = function () {

var frame = _root._currentframe + 1;

_root.gotoAndStop(frame);

}

Tempo = setInterval(GOTO , 4000); // 4 secondes



sinon n'oublies que clearInterval (Tempo) permet d'arrêter un setInterval ()

bye smile.gif

#3 ekameleon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 20167 messages

Posté 17 January 2003 - 14:18 PM

Au passage ... vaut mieux que tu gères cela sur un clip et pas l'animation principale .. je suis pas certain que de se balader dans l'animation principale soit une bonne chose avec setInterval wink.gif
bye smile.gif

#4 abel.thorne

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 59 messages

Posté 17 January 2003 - 14:32 PM

Argh ! Pour le coup du setinterval sur l'anim principale, mon idée c'est de tester (avec un getTimer() mais je pense que ça va encore me faire n'importe quoi) si l'anim se lit assez vite (genre à tel moment on doit être à telle frame) et si ce n'est pas le cas on saute directement à la bonne frame (qui à avoir des pertes et donc un côté haché).

#5 ekameleon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 20167 messages

Posté 17 January 2003 - 14:35 PM

Je te l'ai déjà dit .. vaut mieux tester sur un clip et gérer des clips pour les vitesses de lecture ... faut éviter de toucher à l'animation principale.
bye smile.gif

#6 abel.thorne

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 59 messages

Posté 17 January 2003 - 14:36 PM

Oui, bon, d'accord, je vais tout recommencer mon anim à zéro biggrin.gif

#7 abel.thorne

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 59 messages

Posté 20 January 2003 - 11:57 AM

J'ai pas encore eu le temps de revoir toute mon anim mais j'ai testé le code d'Eka donné plus haut (la fct GOTO). Ca marche plutôt pas mal pour faire des pauses longues (les 4 sec de l'exemple) mais si j'essaie de mettre une vitesse trop rapide, c'est annulé par la lenteur du flash player.

Càd que pour avoir une vitesse réelle de 12 fps, j'ai essayé de mettre un setInterval de 1000/12 et ça rame...

J'ai essayé de rajouter un updateAfterEvent() à la fin de la fonction et maintenant c'est beaucoup plus lent et mes clips ne sont plus synchronisés sad.gif

Est-ce qu'il y aurait un moyen simple de forcer le player à afficher les frames à la vitesse donnée, quitte à en perdre en route ?

#8 ekameleon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 20167 messages

Posté 20 January 2003 - 12:57 PM

Va voir le tuto sur le fréquençage de ton animation et tu apprendras un truc important wink.gif (flash le mini c'est 24 et le top c'est 48 wink.gif)
bye smile.gif

#9 abel.thorne

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 59 messages

Posté 20 January 2003 - 18:00 PM

J'ai lu le tuto, j'ai bien vu le truc des frames = demi-images mais j'ai oublié de préciser un truc dans mon précédent message : sur mon ordi, ça passe bien, les 12 fps me conviennent au niveau fluidité. C'est sur des ordis moins puissants (quoique... un G4 est-il vraiment moins puissant que mon ordi ?) que ça passe pas avec le setInterval à 83 ms (1000/12) et que le updateAfterEvent fait que ça désynchronise et que ça se lit encore plus lentement.

Le fait que ça saccade ou non importe peu, le problème c'est la lenteur à laquelle se déroule l'anim.

Et c'est pour compenser le fait que ça rame (= que c'est lent) sur ce genre de machines que je cherche un moyen de forcer le flash player à lire à la bonne vitesse en virant les frames qu'il a pas le temps d'afficher (je sais pas si c'est très clair).

Pour info, mon anim à 12 fps se lit à peine trop lentement chez moi (duron 8000), elle met environ 3 minutes. Sur un G4 elle met grosso modo le même temps, à peine plus et sur un imac elle met carrément 6 à 7 minutes (donc le rythme est assassiné).

Cette lenteur vient à priori du fait que j'ai pas mal de fonds bitmap que je peux pas vectoriser (si je veux garder une bonne qualité en vectorisant l'image, elle est plus lourde que l'originale).

#10 ekameleon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 20167 messages

Posté 20 January 2003 - 18:06 PM

Duron 8000 ?????? 8O :lool: :bravo: OUAH !!! c'est INTEL qui va pleurer wink.gif

Sinon je pense que tu devais en effet penser à optimiser ton animation , voir si tu utilises pas trop d'alpha ou des boucles de type onEnterFrame ...
Sinon là pour le moment je vois surtout que si tu as fais une animation en partant sur une base de 12 frames par seconde.. cela peut "aller" chez toi mais cela ira pas ailleurs, croit moi .. maintenant à toi de voir smile.gif
je peux pas t'en dire + faut me croire c'est tout smile.gif
bye smile.gif

#11 abel.thorne

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 59 messages

Posté 20 January 2003 - 18:58 PM

Oups, duron 800 bien sûr biggrin.gif

Pour le fait que si une anim va à 12 fps chez moi et pas ailleurs, je compends pas trop : tu veux dire qu'il faut que je la mette à plus ? Sur les bécanes où elle se lit pas assez vite actuellement, ça changera rien, si ?

La première version de l'anim, je l'avais faite à 25 fps (je pensais alors que c'était des images par secondes et pas des demi-images) et alors que ça tournait bien chez moi, c'était trop lent sur mac et trop rapide sur des pc plus puissants.

Pour l'optimisation, j'ai quelques fondus, une anim à base de séquences jpeg, etc. donc c'est de toutes façons lourd et pas évident à optimiser sad.gif

Donc, pas moyen de faire "perdre" des frames à flash player ?

#12 ekameleon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 20167 messages

Posté 20 January 2003 - 19:02 PM

Euh ? tu as pas lu ce que j'ai dit ? le tuto sur le fréquençage ? car faut soit du 12 (NUL), du 24 (parfait pour le net) ou du 48 parfait en local.
C'est des multiples de 12 wink.gif 25 cela sert à rien smile.gif
bye smile.gif

#13 abel.thorne

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 59 messages

Posté 20 January 2003 - 22:44 PM

Si, j'ai lu le tuto mais y a un truc que je ne comprends pas après coup, avec ce que tu dis : en gros, si c'est pas un multiple de 12, Flash n'en tient pas compte !?

Je doute qu'en passant mon anim de 25 à 24 ou de 12 à 24 me fasse gagner en fluidité sur une machine pourrie (mon problème est bien basé sur une vitesse de lecture de l'anim, pas sur une vitesse de chargement)...

Mais bon, j'essaierai quand même demain.

#14 ekameleon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 20167 messages

Posté 21 January 2003 - 00:55 AM

c'est ton oeil qui prendra pas compte de la différence wink.gif
bye smile.gif



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP