Animation plus lente sur IE que sur firefox!

hiade Messages postés 19 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 8 avril 2013 - 24 mai 2009 à 08:54
hiade Messages postés 19 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 8 avril 2013 - 2 juin 2009 à 15:21
Bonjour,
Voilà je suis pas une pro et on m'a refilé un code très sympa pour une animation ! Un objet dont le contour se dessine au fur et à mesure.
Le problème c'est que sur firefox ça fonctionne très bien en revanche sur IE c'est épouvantablement trop long!
Je ne m'y connais pas du tout alors j'ai juste fait un copier coller!
Je vous mets le code et peut-être quelqu'un pourrait m'éclairer!
Merci d'avance!
vitesse = 2;
distanceMin = 10;
 
initialiser = function () {
    clearInterval(intervalle);
    this.createEmptyMovieClip("trajectoire", 0);
    trajectoire._x = guide._x;
    trajectoire._y = guide._y;
    trajectoire.clear();
    trajectoire.lineStyle(1, "0x#660000",100);
    guide.gotoAndStop(1);
    oldx = guide.point._x;
    oldy = guide.point._y;
    trajectoire.moveTo(oldx, oldy);
    guide.point._visible = false;
    intervalle = setInterval(nextImage, vitesse);
};
 
nextImage = function () {
    guide.nextFrame();
    if (guide._currentframe == guide._totalframes) {
        clearInterval(intervalle);
    }
    else {
        var newx = guide.point._x;
        var newy = guide.point._y;
        var dx = newx-oldx;
        var dy = newy-oldy;
        var d = Math.sqrt(dx*dx+dy*dy);
        if (d>distanceMin) {
            trajectoire.moveTo(newx, newy);
        }
        else {
            trajectoire.lineTo(newx, newy);
        }
    oldx = newx;
    oldy = newy;
    }
};
 
initialiser();

hiade

4 réponses

JSBR Messages postés 14 Date d'inscription samedi 29 avril 2006 Statut Membre Dernière intervention 25 mai 2009
24 mai 2009 à 20:37
Bonjour hiade,

Première réaction en voyant ton code:  bizarre... (il manque quelque chose ou c'est moi... rien semble bouger, est j'ai de la misère à visualisé), mais bon...

- D'abord pourquoi ne pas faire ton animation à la main? à priori il ne semble y avoir aucune interactivité avec l'utilisateur
- Si tu veux conserver ton code, il y a une chose à vérifier, le fps (image par seconde), en cherchant sur le site tu devrait trouver un code pour le voir en temps réel.
- Ensuite je déconseille les intervalle, par leur impréssision et parce que flash doit tricher pour les ajuster le visuel selon les frames (images) (donc pas toujours très fluide), donc je te conseille :
"onEnterFrame=function(){}" (remplace function "nextImage") qui se répétera à chaque frame et enleve les intervalle
      P.S: initialise avant de déclancher
- Si tu veux garder ton interval augmente au moins la vitesse (qui =au temps en miliseconde entre chaque appelle) à au moins 100, 2 c'est un peu cours et ajuste selon le facteur de déplacement.
0
cs_tom Messages postés 1511 Date d'inscription samedi 8 décembre 2001 Statut Modérateur Dernière intervention 11 juin 2009
28 mai 2009 à 14:36
JSRB je ne suis pas d'accord avec ce que tu lui sors :
setInterval est conseillé par rapport à onenterframe, car on peut controler le timing exact, quelquesoit le puissance de l'ordinateur. Flash ne triche pas, il adapte ce qui doit etre à l'instant X exact independament du framerate que peux fournir l'ordi sur lequel tu visionne l'anim. Conclusion : ce sera toujours le meme temps d'animation quelquesoit le framerate poussif ou pas de l'anim.
PS: et il initialise avant de declencher...

[MODE Jean Pierre Coffe ON]
Concernant les ralentissements sous IE, c'est juste que IE c'est de la merde. Du moins l'activeX qui change tout les 4 matins n'est toujours pas optimisé. De toute façon, c'est le fonctionnement complet de IE qui n'est toujours pas optimisé.

La seule chose que tu peux faire, c'est ralentir le temps de traitement (boucle de 2ms, c'est certainement pour ça que ca s'affiche difficilement sous IE, c'est une grosse vache lente qui arrive pas à traiter ce calcul simple et l'affichage de flash en meme temps) ou choisir une autre façon de faire, comme proposer une anim à la main.

Dans le doute, essaie comme derniere chance d'inserer à la fin de ta fonction nextimage : updateAfterEvent();
On sait jamais, si ça se trouve...
0
hiade Messages postés 19 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 8 avril 2013
2 juin 2009 à 15:17
Merci [../auteur/JSBR/760766.aspx JSBR] mais ça ne marche pas c'est même encore plus lent en augmentant la vitesse!
Oui je sais c'est étrange!
En revanche j'ai changé tout simplement modifié la cadence de mon anim et là c'est toujours plus lent sur ie mais c'est moins pire!
Enfin merci beaucoup de m'avoir répondu!
à bientôt

hiade
0
hiade Messages postés 19 Date d'inscription mardi 29 août 2006 Statut Membre Dernière intervention 8 avril 2013
2 juin 2009 à 15:21
Bon j'ai essayé la solution de [../auteur/JSBR/760766.aspx JSBR] et ça ne marche pas mais il m'a fait penser à changer ma cadence image par seconde .
Comme je l'ai dit j'ai juste fait un copier coller du code alors je voudrai bien essayer la tienne mais je sais pas ou je change la boucle dans mon code!
Si tu peux m'aider ...
Merci

hiade
0
Rejoignez-nous