Salut,
Je me pose une question hautement existentielle que voici :
L'accès à la propriété text d'un TextField renvoie un objet de type String.
(extrait de la doc : )
text (TextField.text property)
public text : String
|
Alors comment se fait-il qu'on puisse passer ce String à une fonction à arguments typés ?
Du genre :
function fonction(argument:Number)
{
trace("plouf" );
}
fonction(montextfield.text); |
Alors que :
var maString:String = "poc";
fonction(maString);
|
ne compilera pas...
Bon, après réflexion, c'est logique, monTextField.text aurait pu être remplacé à l'exécution par n'importe quel objet, le compilateur ne peut donc pas l'évaluer avant. (bouh que c'est moche le flash)
Donc en fait à l'exécution Flash est censé faire un cast du String qu'on lui donne vers le Number attendu. Mais là est l'os...
En fait après vérification, si vous faites un truc du genre
var nb:Number;
function fonction(arg:Number)
{
nb = arg;
}
fonction(monTextField.text);
trace(typeof(nb)); |
La sortie sera "string".
Flash ne fait pas de cast, il remplace comme un sale.
Et vous retrouvez donc à avoir déclaré une variable d'un certain type qui change de type en cours de route.
Donc en fait j'ai résolu mon problème en rédigeant ce post , le problème, c'est que flash c'est sale, ne vous fatiguez pas à typer ça ne sert à rien.
C'était un message à caractère informatif.
Message édité par _iOn_ le 22-10-2006 à 13:03:49
---------------
Any sufficiently complex bug is indistinguishable from magic.