Merci pour toute ces explications, j'savais que c'était le bon endroit
pour poser cette question ^^, et je garde toute ça précieusement :)

Bon pour le coup je vais rester sur la solution de tester la valeur
"Infinity" avant de passer dans parseInt, le but du jeu étant que des
nons codeurs (le graphiste en l'occurence) puissent manipuler le XML
pour ses tests (vérifier que les anims sont calés, ce genre de trucs) et
vu que, bon, la technique et lui ça fait 2 je vais éviter le coup de la
notation avec exposant qui est un peu violente à mon avis. Par contre,
c'est très intéressant de comprendre cette histoire d'infini.

Sinon, concernant tes derniers paragraphes, justement je voulais
utiliser Infinity pour cette particularité de ne pas réagir aux
opérations numériques classiques. J'ai une mécanique assez proche des
échecs (tour par tour et déplacement sur une grille) et j'ai pris le
parti de considérer tout les mouvements possibles comme limités en
nombre, et pour gérer certains cas particuliers (ou pour des cheats en
effet) d'utiliser les constantes Infinity.

En tout cas merci beaucoup pour l'aide et les explications :)

Cédric
> ou sinon aller à la source ;)
>
> http://code.google.com/p/redtamarin/source/browse/trunk/src/core/Number.as
>
> en direct de la VM Tamarin pour définir les const number
> ils font
>
> -----
> // E262 {DontEnum, DontDelete, ReadOnly}
> public static const NaN               :Number = 0/0
> public static const NEGATIVE_INFINITY :Number = -1/0
> public static const POSITIVE_INFINITY :Number = 1/0
> public static const MIN_VALUE         :Number = 4.9e-324
> public static const MAX_VALUE         :Number = 1.7976931348623158e
> +308
> -----
>
> mais bon hehe ce ne sont pas les vraies values pour les INFINITY
>
> et voir aussi
> http://code.google.com/p/redtamarin/source/browse/trunk/src/core/MathUtils.cpp
>
> pour le détail du détail
>
> et en particulier
> double MathUtils::parseInt(const wchar* s, int len, int radix /*=10*/,
> bool strict /*=false*/ )
> http://code.google.com/p/redtamarin/source/browse/trunk/src/core/MathUtils.cpp#253
>
> (oui parseInt ca n'y parrait pas mais c'est un gros morceau ;))
>
> donc oui parseInt( "Infinity" ) ca ne marchera pas
>
> mais le probleme n'est pas là amha
>
> Infinity en soit n'a pas vraiment de valeur, c'est comme NaN
> ce sont juste des symbols qui signifient "cette valeur est infinie",
> "cette valeur n'est pas un nombre"
>
> donc la solution con pour ton XML
> c'est simplement de tester si la valeur est "infinity"
>
> <root><item>infinity</item></root>
>
> if( item == "infinity" )
> {
>    return Number.POSITIVE_INFINITY;
> }
>
> ou sinon se baser sur le MAX_VALUE (1.7976931348623158e+308)
> qui est bien plus "petit" que infinity mais qui est le plus grand
> nombre que ActionScript puisse afficher et comprendre (en terme de
> conversion toString)
>
> cad
>
> var a:Number = 1.7976931348623158e+308;
> var b:Number = a + 1;
>
> trace( a ); //1.79769313486231e+308
> trace( b ); //1.79769313486231e+308
>
> oui le 1 ne s'ajoute pas
>
>
> maintenant faisons un autre petit test
>
> var a:Number = 1.7976931348623158e+308;
> var b:Number = 1.7976931348623159e+308;
>                                 ^--- +1
>
> trace( a ); //1.79769313486231e+308
> trace( b ); //Infinity
>
> et une maniere plus simple d'obtenir cette infinity c'est
>
> var c:Number = 2e+308;
> trace( c ); //Infinity
>
> mais attention, meme si ca affiche Infinity
> infinity n'a pas de reelle valeur
>
> ca dit juste
> "j'affiche infinity car je ne sais pas afficher un nombre plus grand
> que 1.7976931348623158e+308"
>
> et le gros problem (ou la bonne feature) avec ca c'est que dès que le
> nombre est considéré "infinity"
> on ne peut plus faire de calculs dessus, genre -1/+1
>
> donc si c'est un cheat pour un jeu pour avoir des ammo infinis
> c'est super suffit de bumper la valeur Number à infinity et meme
> si il y a une logique pour faire -1 ammo à chaque fois qu'on tire
> ce sera vraiment infini (vu que infinity ne peut pas etre décrémenté)
>
>
> =)
>
> zwetan
>
> >
>   


--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "FCNG" de 
Google Groupes.
 Pour transmettre des messages à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour résilier votre abonnement à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour afficher d'autres options, visitez ce groupe à l'adresse 
http://groups.google.com/group/FCNG?hl=fr
-~----------~----~----~----~------~----~------~--~---

Répondre à