EXEMPLE DE ROUE DYNAMIQUE AVEC FLASH MX

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 - 5 nov. 2005 à 06:03
zithumy Messages postés 1 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 30 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.

https://codes-sources.commentcamarche.net/source/34486-exemple-de-roue-dynamique-avec-flash-mx

zithumy Messages postés 1 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 30 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és 4 Date d'inscription samedi 18 janvier 2003 Statut Membre Derniè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és 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
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();

Peg'
Rejoignez-nous