| Version en cours de développement | |
|
|
Auteur | Message |
---|
j79y910 Accro
Nombre de messages : 3530 Age : 68 Localisation : 78 Yvelines Loisirs : Tout pourvu qu'il y ait à apprendre Date d'inscription : 13/02/2008
| Sujet: Re: Version en cours de développement Mar 12 Aoû 2008, 18:19 | |
| - chris_c a écrit:
- le groupe theBall
- Code:
-
class ellipse{
// calculate x and y offset of the ball // sin and cos are between -1 and 1 static var Angle:Number=0; static function tourne(){
Angle +=(1);// increase angle by 1 degree at each frame
var rad = Angle / 20; // divide angle by speed
var X:Number = Math.sin(rad) * 100; // X: -100 to +100 pixels horizontally var Y:Number = Math.cos(rad) * 30; // Y: -30 to +30 pixels vertically
// place the ball at x and y // (120,120) is the center _root.theBall._x = 220 + X; _root.theBall._y = 220 + Y;
// scale the ball based on y coordinate (vertical axis) // negative y will increase the scale // 100 is the normal size _root.theBall._xscale = 100 + Y; _root.theBall._yscale = 100 + Y;
// fade the ball based on y too _root.theBall._alpha = 75 + Y / 2;
} }
Chris_c, j'ai essayé ce code et il marche. par contre, pour moi, on doit pouvoir l'améliorer et j'ai quelques idées. Be patient, on pourra peut-être en faire un sprite! (on peut toujours garder l'espoir) |
|
| |
chris_c Accro
Nombre de messages : 8403 Age : 54 Date d'inscription : 18/11/2007
| |
| |
Admin Administrateur
Nombre de messages : 18435 Localisation : Toulouse Date d'inscription : 11/12/2005
| Sujet: Re: Version en cours de développement Mar 12 Aoû 2008, 21:27 | |
| - j79y910 a écrit:
- Be patient, on pourra peut-être en faire un sprite! (on peut toujours garder l'espoir)
Oui, déjà on peut faire un Sprite. Pour faire ce Sprite, on peut placer le script dans "programme" de façon à ne garder qu'un seul fichier ".phi" Voici le script "permanent" : - Code:
-
if (Angle==undefined){ Angle = 0;} Angle = Angle+1;// increase angle by 1 degree at each frame
rad = Angle / 20; // divide angle by speed
X = ->Math.sin(rad); // X: -100 to +100 pixels horizontally Y= ->Math.cos(rad) ; // Y: -30 to +30 pixels vertically X = X*100; Y = Y*30; // place the ball at x and y // (120,120) is the center ball = _root.theball; ->ball._x = 220 + X; ->ball._y = 220 + Y;
// scale the ball based on y coordinate (vertical axis) // negative y will increase the scale // 100 is the normal size ->ball._xscale = 100 + Y; ->ball._yscale = 100 + Y;
// fade the ball based on y too ->ball._alpha = 75 + Y / 2; Ensuite, nous verrons comment en faire un Sprite accessible dans le menu. Phildes |
|
| |
j79y910 Accro
Nombre de messages : 3530 Age : 68 Localisation : 78 Yvelines Loisirs : Tout pourvu qu'il y ait à apprendre Date d'inscription : 13/02/2008
| Sujet: Re: Version en cours de développement Mer 13 Aoû 2008, 16:49 | |
| - chris_c a écrit:
- l'idée etait que au lieu d'une forme ca soit l'horloge qui tourne
Oui mais le réel problème que je n'arrive pas à résoudre pour l'instant c'est de synchroniser la rotation des secondes pour que les 10 chiffres fassent un tour en exactement 10 secondes et s'affichent au bon endroit! |
|
| |
Admin Administrateur
Nombre de messages : 18435 Localisation : Toulouse Date d'inscription : 11/12/2005
| Sujet: Re: Version en cours de développement Mer 13 Aoû 2008, 17:46 | |
| - j79y910 a écrit:
- chris_c a écrit:
- l'idée etait que au lieu d'une forme ca soit l'horloge qui tourne
Oui mais le réel problème que je n'arrive pas à résoudre pour l'instant c'est de synchroniser la rotation des secondes pour que les 10 chiffres fassent un tour en exactement 10 secondes et s'affichent au bon endroit! Il faut que tu calcule l'angle en fonction des heures : s = (Date.getSeconds()*1000)+Date.getMilliseconds(); Veux-tu que je recherche le calcule à opérer pour trouver l'angle adéquate ? Phildes |
|
| |
j79y910 Accro
Nombre de messages : 3530 Age : 68 Localisation : 78 Yvelines Loisirs : Tout pourvu qu'il y ait à apprendre Date d'inscription : 13/02/2008
| |
| |
chris_c Accro
Nombre de messages : 8403 Age : 54 Date d'inscription : 18/11/2007
| |
| |
j79y910 Accro
Nombre de messages : 3530 Age : 68 Localisation : 78 Yvelines Loisirs : Tout pourvu qu'il y ait à apprendre Date d'inscription : 13/02/2008
| Sujet: Re: Version en cours de développement Mer 13 Aoû 2008, 18:48 | |
| :rendeer: Et voilà ! j'ai compris mon erreur grâce à nos échanges: au début je me synchronise sur les secondes sans tenir compte des millisecondes. Donc j'ai tout faux, j'y retourne immédiatement (ça me fait penser à une chanson de S Reggiani mais pas de risque d'explosion de vos horloges, rassurez-vous) :bball: |
|
| |
Beldjilali Programmeur
Nombre de messages : 3016 Date d'inscription : 24/06/2007
| |
| |
Admin Administrateur
Nombre de messages : 18435 Localisation : Toulouse Date d'inscription : 11/12/2005
| Sujet: Re: Version en cours de développement Mer 13 Aoû 2008, 21:43 | |
| - j79y910 a écrit:
- :rendeer: Et voilà ! j'ai compris mon erreur grâce à nos échanges:
au début je me synchronise sur les secondes sans tenir compte des millisecondes... On voyait qu'il s'agissait d'un problème d'arrondi. Perso, je pensais à : - Code:
-
var d:Date = new Date(); var a:Number = (d.getSeconds()*1000) + d.getMilliseconds(); a = ((a%10000) / 10000) *360; // si tu définis l'angle en degrés Phildes[i] |
|
| |
j79y910 Accro
Nombre de messages : 3530 Age : 68 Localisation : 78 Yvelines Loisirs : Tout pourvu qu'il y ait à apprendre Date d'inscription : 13/02/2008
| Sujet: Re: Version en cours de développement Jeu 14 Aoû 2008, 10:48 | |
| - Admin a écrit:
Perso, je pensais à : - Code:
-
var d:Date = new Date(); var a:Number = (d.getSeconds()*1000) + d.getMilliseconds(); a = ((a%10000) / 10000) *360; // si tu définis l'angle en degrés
Phildes[i] En fait je déforme un texte riche de 10 caractères (de 0 à 9) pour en faire un cercle. Donc je suis obligé de faire mes calculs en radians pour prendre le sinus et le cosinus. Pour chaque caractère au bord du cercle, la rotation est effectivement en degrés. angle est l'angle courant. Code du cercle: - Code:
-
for(var ii = 0; ii <= 9; ii++) { if (first1) {first1 = false; angle1 = dernier.angle;} var x = rayonx * Math.cos(angle1); var y = rayony * Math.sin(angle1); _root.chiffres["car" + ii]._x = x; _root.chiffres["car" + ii]._y = y; _root.chiffres["car" + ii]._rotation = 180 + angle1 / Math.PI*180; angle1 = angle1 + 2 * Math.PI/10; } Voilà comment je synchronise au premier passage et quand il y a une dérive - Code:
-
angle = Math.round((my_date.getSeconds() - Math.floor(my_date.getSeconds()/10) * 10) - dernier.nbr / 2) * 2 * Math.PI / 10; Je prends les secondes de getSeconds et je m'en sers pour déterminer l'angle de départ pour que le chiffre dans le carré corresponde à la vraie seconde. Donc je synchronise sur un nombre entier de secondes alors qu'il est sûr qu'on est pas à la seconde pile, par exemple 6s 385 millièmes, d'où le décalage. Je vais voir çà demain. |
|
| |
j79y910 Accro
Nombre de messages : 3530 Age : 68 Localisation : 78 Yvelines Loisirs : Tout pourvu qu'il y ait à apprendre Date d'inscription : 13/02/2008
| Sujet: Re: Version en cours de développement Jeu 14 Aoû 2008, 21:20 | |
| Oui sur un PC portable j'ai réussi à synchroniser la rotation, mais voilà quand je mets le swf sur mon PC fixe décalage total! La bonne formule: - Code:
-
dernier.angle = (Math.round((my_date.getSeconds() - Math.floor(my_date.getSeconds()/10) * 10) - longueurdutexteriche / 2) + my_date.getMilliseconds () / 1000) * 2 * Math.PI / (longueurdutexteriche) ; C'est incompréhensible. Quand je "recompile" sur mon PC fixe ca ne marche pas non plus! Au fait c'est quoi les répertoires memo_scripts dans lesquels il y a 4 fois le fichier AS? |
|
| |
j79y910 Accro
Nombre de messages : 3530 Age : 68 Localisation : 78 Yvelines Loisirs : Tout pourvu qu'il y ait à apprendre Date d'inscription : 13/02/2008
| Sujet: Re: Version en cours de développement Jeu 14 Aoû 2008, 22:46 | |
| Une précision, la version d'e-anim sur le portable où ma rotation marche est la 8.02.005. Peux-t'il y avoir un rapport avec la 8.02.008 plus récente de mon PC fixe? |
|
| |
Admin Administrateur
Nombre de messages : 18435 Localisation : Toulouse Date d'inscription : 11/12/2005
| Sujet: Re: Version en cours de développement Ven 15 Aoû 2008, 02:05 | |
| - j79y910 a écrit:
- Une précision, la version d'e-anim sur le portable où ma rotation marche est la 8.02.005.
Peux-t'il y avoir un rapport avec la 8.02.008 plus récente de mon PC fixe? A première vue, je ne vois pas de raison... Mais tu peux installer la version 8.02.008 sur ton protable (tu le mets dans un nouveau répertoire) Dis-moi si le problème est causé ar la dernière version . :face: Phildes |
|
| |
j79y910 Accro
Nombre de messages : 3530 Age : 68 Localisation : 78 Yvelines Loisirs : Tout pourvu qu'il y ait à apprendre Date d'inscription : 13/02/2008
| Sujet: Re: Version en cours de développement Ven 15 Aoû 2008, 08:26 | |
| Bonjour, je vais essayer. Mais après une nuit :sleep: :sleep: de réflexion je pense que le problème est ailleurs. Le swf est à priori indépendant des PC où on le lance et comme je teste le changement de milliseconde (je sais c'est très gourmand!) il n'y a pas de raison pour que ça ne fonctionne pas. Par contre au cours de mes essais (date, timer, setInterval, "perso") j'ai pu voir que l'horloge de mon portable avait une dérive de 14ms par seconde et mon PC fixe une dérive de 40ms par seconde. Ce qui à mon sens est normal vu la différence de puissance! |
|
| |
Contenu sponsorisé
| |
| |
|