Action script : un petit souci étrange - Flash/ActionScript - Programmation
Marsh Posté le 07-12-2009 à 14:11:04
Aucun gentil monsieur n'a l'extrême gentillesse de m'aider ? parce que ça fait quelques jours que je casse les dents dessus, c'est pourtant vraiment simple sur papier...
" _root.onglet._x += (503 - _root.onglet._x)*0.7; " est mathématiquement juste, mais dans flash il me retourne aléatoirement des valeurs absurdes et je ne parviens vraiment pas à comprendre pourquoi...
Marsh Posté le 07-12-2009 à 19:42:59
lxl ihsahn lxl a écrit : |
Tu l'as dit !
Au delà des erreurs de syntaxes, je comprends même pas comment Flash t'as pas fait sauté la maison avec ça.
Ton onEnterFrame, puisque ton FPS est à 30, lance 30 fois par seconde une déclaration d'interval. Qui lui appel ta fonction (pas sur qu'il la trouve d'ailleurs) toutes les 33 millisecondes.
Ca fait beaucoup nan ?
Si veux déplacer des clips, utilise la classe Tween.
Marsh Posté le 07-12-2009 à 20:06:01
Zedlefou a écrit : |
Je suis sur une image fixe, donc si je ne met pas d'interval elle ne se lance qu'une fois
J'ai réussi à le faire avec la classe Tween, mais finalement ça n'était pas un problème de code mais un bug de flash : j'ai recrée la même occurence et j'ai appliqué le même code et ça a marché. Bon maintenant que je connais la classe Tween j'ai pu faire quelquechose de plus propre
Marsh Posté le 06-12-2009 à 17:39:37
Salut, bon je suis un peu débutant en action script, mais j'ai quand même un peu de logique, le truc c'est que je me casse la crâne sur un truc qui ne me va pas...
En gros j'ai une occurrence qui doit rejoindre sa position à l'entrée sur l'image-clef avec un léger effet 'd'amorti' sur la fin. L'occurrence a une place précise sur chaque image-clef de la scène (chaque page de l'animation) et l'utilisateur peut venir de n'importe quelle autre page, d'où la necessité de passer par AS plutot que par interpolation de mouvement.
Voila le caca dans lequel je suis empêtré :
_root.onglet.onEnterFrame = function() {
xfonc = function () {
if (_root.onglet._x != 503) {
_root.onglet._x = Math.round (_root.onglet._x+((503-_root.onglet._x)*0.7));
};
else {
_root.onglet._x = 503 ;
};
};
setInterval(xfonc,33); // mit à 33 pour coïncider avec le framerate (30fps)
};
stop();
Au départ il n'y avait pas de if, ni rien du tout, le code était plus simple et plus propre :
_root.onglet.onEnterFrame = function() {
xfonc = function() {
_root.onglet._x += (503 - _root.onglet._x)*0.7;
}
setInterval(xfonc, 33);
}
stop();
Dans les deux cas, l'occurrence va bien vers sa cible, mais aléatoirement "saute" d'un côté ou de l'autre, comme un genre d'artefact... J'ai ajouté un Math.round, puis j'ai tenté de mettre une boucle while (pour qu'il cesse de bouger une fois a destination), puis une condition if/else, rien n'y fait, il y a toujours ces "bugs" aléatoires.
Ah oui, c'est de l'AS2 bien sur, sous flash CS3.
---------------
[YouTube] Le Cerveau Lent : vulgarisation sciences cognitives ◦ [url=https://forum.hardware.fr/hfr/AchatsVentes/Photo-Audio-Video/vds-pentax-samyang-sujet_644991_1.htm]Vente Penta