pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 2013
-
5 nov. 2005 à 06:03
zithumy
Messages postés1Date d'inscriptionlundi 26 avril 2010StatutMembreDernière intervention30 avril 2010
-
30 avril 2010 à 13:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
zithumy
Messages postés1Date d'inscriptionlundi 26 avril 2010StatutMembreDernière intervention30 avril 2010 30 avril 2010 à 13:30
Bonjour, j'ai 5 movie-clips dans ma bibliothèque et je n'arrive pas à les insérer dans l'animation??? Quelqu'un peut-il m'expliquer? J'ai vu dans les propriétés du movie-clip "petitRond" qu'il était liée avec l'identifiant "vignette". Mais les autres movie-clips,que faut-il faire avec???
Le but est bien d'avoir des images différentes qui tournent sur cette roue ou je me trompe???
cs_jayrom
Messages postés4Date d'inscriptionsamedi 18 janvier 2003StatutMembreDernière intervention 5 novembre 2005 5 nov. 2005 à 13:28
Salut Pegase31, je te remercie de tes remarques qui me semblent effectivement justes sur quelques points et d'autres avec lesquels je ne suis pas tout à fait d'accord.
- En ce qui concerne les frames vides (et le fait que le méchanisme soit codé sur 3 frames) c'était tout simplement pour éviter le fameux onEnterFrame et pouvoir jouer sur la vitesse en rajoutant et enlevant des frames (ce qui, avec le paramètre de vitesse donne un vrai contrôle sur la vitesse). De plus je t'avouerai que je ne suis pas un fervent admirateur du onEnterFrame, bouffeur légendaire de CPU et source de bon nombre d'anims beaucoup trop lourdes en terme de charge. Même si tu peux le "deleter" en live, à l'usage il s'avère que Flash est tellement mal développé que parfois il ne supprime rien du tout ou le player s'emmèle les pédales (et là ce n'est ps une remarque personnelle mais une remarque de on nombre de devs flash qui font aussi ça tous les jours). Mais bon sur ce sujet c'est toujours des débats sans fin... lol
- Pour la duplication des roues tu as raison c'est une erreur grossière de ma part sur laquelle j'aurais dû revenir.
- Et enfin pour la rotation dynamique je suis en effet obligé de tester l'angle de rotation pour changer le signe du paramètre (+ ou - selon qu'il est supérieur ou inférieur à 0) dans le cas d'une nav à la souris. Ton code est donc plus judicieux.
Voilà merci beaucoup d'avoir pris le temps de regarder et commenter cette source.
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 5 nov. 2005 à 06:03
Alors j'ai bien regardé ton code et j'ai noté énormément de bugs :
- même si tu es en 30 img/sec, ton animation semble être en 12 voir moins et c'est du au fait de laisser 2 frames vides entre les 2 scripts de boucle (ça sera arrangé plus tard)
- if(rotationAngle>=360){ rotationAngle = vitesseDeRotation;} Or, si tu as une rotation dynamique négative ou à vitesse variable (avec la souris, par exemple), ton script ne fonctionne plus. Il faut préférer "rotationAngle%=360".
- Le fait de mettre tes scripts sur 2 frames différentes est une trés mauvaise idée. Il te faut utiliser la fonction "onEnterframe"
- Tu dupliques à chaque exacution de ton script les X roues en détruisant les autres présentes car tu les écrases au même niveau .. charge de CPU inutile.
Je me permets de recoder ton script sur une seule frame ici :
var nombreElements = 6;
var angle = 0;
var rayon = 100;
var rotationAngle = 0;
var vitesseDeRotation = .2;
// Création des clips :
for (var i=1; i<=nombreElements; i++) {
_root.attachMovie("vignette","vignette"+i,i);
}
var angle = 360/nombreElements;
// Script tournant tout seul :
this.onEnterFrame = function () {
for(var i=1; i<=nombreElements; i++){
var Xtemp = centre._x + rayon * Math.cos((rotationAngle + (angle*(i-1)))*Math.PI/180);
var Ytemp = centre._y + rayon * Math.sin((rotationAngle + (angle*(i-1)))*Math.PI/180);
_root["vignette"+i]._x = Xtemp;
_root["vignette"+i]._y = Ytemp;
rotationAngle += vitesseDeRotation;
if(rotationAngle>=360){
rotationAngle = vitesseDeRotation;
}
}
}
stop();
30 avril 2010 à 13:30
Le but est bien d'avoir des images différentes qui tournent sur cette roue ou je me trompe???
5 nov. 2005 à 13:28
- En ce qui concerne les frames vides (et le fait que le méchanisme soit codé sur 3 frames) c'était tout simplement pour éviter le fameux onEnterFrame et pouvoir jouer sur la vitesse en rajoutant et enlevant des frames (ce qui, avec le paramètre de vitesse donne un vrai contrôle sur la vitesse). De plus je t'avouerai que je ne suis pas un fervent admirateur du onEnterFrame, bouffeur légendaire de CPU et source de bon nombre d'anims beaucoup trop lourdes en terme de charge. Même si tu peux le "deleter" en live, à l'usage il s'avère que Flash est tellement mal développé que parfois il ne supprime rien du tout ou le player s'emmèle les pédales (et là ce n'est ps une remarque personnelle mais une remarque de on nombre de devs flash qui font aussi ça tous les jours). Mais bon sur ce sujet c'est toujours des débats sans fin... lol
- Pour la duplication des roues tu as raison c'est une erreur grossière de ma part sur laquelle j'aurais dû revenir.
- Et enfin pour la rotation dynamique je suis en effet obligé de tester l'angle de rotation pour changer le signe du paramètre (+ ou - selon qu'il est supérieur ou inférieur à 0) dans le cas d'une nav à la souris. Ton code est donc plus judicieux.
Voilà merci beaucoup d'avoir pris le temps de regarder et commenter cette source.
5 nov. 2005 à 06:03
- même si tu es en 30 img/sec, ton animation semble être en 12 voir moins et c'est du au fait de laisser 2 frames vides entre les 2 scripts de boucle (ça sera arrangé plus tard)
- if(rotationAngle>=360){ rotationAngle = vitesseDeRotation;} Or, si tu as une rotation dynamique négative ou à vitesse variable (avec la souris, par exemple), ton script ne fonctionne plus. Il faut préférer "rotationAngle%=360".
- Le fait de mettre tes scripts sur 2 frames différentes est une trés mauvaise idée. Il te faut utiliser la fonction "onEnterframe"
- Tu dupliques à chaque exacution de ton script les X roues en détruisant les autres présentes car tu les écrases au même niveau .. charge de CPU inutile.
Je me permets de recoder ton script sur une seule frame ici :
var nombreElements = 6;
var angle = 0;
var rayon = 100;
var rotationAngle = 0;
var vitesseDeRotation = .2;
// Création des clips :
for (var i=1; i<=nombreElements; i++) {
_root.attachMovie("vignette","vignette"+i,i);
}
var angle = 360/nombreElements;
// Script tournant tout seul :
this.onEnterFrame = function () {
for(var i=1; i<=nombreElements; i++){
var Xtemp = centre._x + rayon * Math.cos((rotationAngle + (angle*(i-1)))*Math.PI/180);
var Ytemp = centre._y + rayon * Math.sin((rotationAngle + (angle*(i-1)))*Math.PI/180);
_root["vignette"+i]._x = Xtemp;
_root["vignette"+i]._y = Ytemp;
rotationAngle += vitesseDeRotation;
if(rotationAngle>=360){
rotationAngle = vitesseDeRotation;
}
}
}
stop();
Peg'