Animation plus lente sur IE que sur firefox!

Signaler
Messages postés
20
Date d'inscription
mardi 29 août 2006
Statut
Membre
Dernière intervention
8 avril 2013
-
Messages postés
20
Date d'inscription
mardi 29 août 2006
Statut
Membre
Dernière intervention
8 avril 2013
-
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

Messages postés
14
Date d'inscription
samedi 29 avril 2006
Statut
Membre
Dernière intervention
25 mai 2009

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.
Messages postés
1511
Date d'inscription
samedi 8 décembre 2001
Statut
Modérateur
Dernière intervention
11 juin 2009

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...
Messages postés
20
Date d'inscription
mardi 29 août 2006
Statut
Membre
Dernière intervention
8 avril 2013

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
Messages postés
20
Date d'inscription
mardi 29 août 2006
Statut
Membre
Dernière intervention
8 avril 2013

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