Bug des composants TextInput et TextArea ?
Par -Alexandre LEGOUT aka LAlex- le 3 octobre 2003, 12:23 - Divers - Lien permanent
Attention ! Je considère cela comme un bug, mais peut-être que j'utilise mal le composant tout simplement ... :?
Il est possible dans Flash d'utiliser des noms d'instances qui contiennent des points (par exemple "monNom.dInstance"). Il est évident que dans ce cas la, on ne peut plus accéder aux clips avec la notation _root.monNom.dInstance, car ActionScript l'interpréterait comme une propriété dInstance de l'objet monNom ... :roll: Mais il est toujours possible d'y accéder avec la notation par crochets _root["monNom.dInstance"] ... ![]()
Eh bien figurez vous qu'il est impossible d'accéder à la propriété text d'un composant TextInput de cette manière, alors qu'on peut le faire sans aucun problème avec un TextField normal ... ![]()
J'ai jeté un coup d'oeil sur la classe mx.controls.TextInput, mais elle se contente de modifier la propriété text du TextField contenu à l'interieur (la propriété label est un TextField) : function setText(t:String):Void
{
if (initializing)
{
initText = t;
}
else
{
var l = label;
if (l.html == true)
{
l.htmlText = t;
}
else
{
l.text = t;
}
}
// Send a "valueChanged" event
dispatchValueChangedEvent(t);
}
Comment se fait-il alors que je ne puisse pas changer cette p*$%£ de propriété ?!? 8O Pour compléter ca, si on donne un nom avec un point à un composant TextField, même la valeur initiale que l'on renseigne dans les propriétés du composant n'est pas prise en compte ... :? Je n'ai pas trouvé d'instructions comme eval(...) dans les classes de composants, donc je ne vois vraiment pas ... ![]()
Le composant TextArea a le même problème, et je n'en ai pas testé d'autres ... :roll:
Commentaires
Je ne suis pas certain de comprendre ce que tu tentes de faire... ?
Donner un nom d'instance contenant un point à un composant TextInput ?
Parce que monTextInput.text fonctionne...
Sinon, je ne vois pas pourquoi quelqu'un voudrait mettre un point dans un nom d'instance, ce n'est pas très catholique comme nomentlature... ?
Arf ...
Je sais bien que ce n'est pas trop catolique, mais c'est pour un problème de correspondacne entre des noms de tags XML et le nom du composant pour faire un mapping automatique. :roll:
Le XML est récupéré depuis un WebService venant d'un serveur tout pourri, et donc je n'ai aucun contrôle dessus. Pour rectifier ce problème, je me suis contenté de remplacer les point par des tirets dans le nom du composant.
Par contre, je ne trouve pas normal que on te laisse mettre des points dans le nom d'instance si c'est pour que ca ne marche pas ensuite... :? Soit ce n'est pas possible, soit ca l'est, mais te laisser faire la moitié du chemin pour te dire à ce moment la que ca ne marche pas, je trouve ca dommage ...
Oui bon, je comprends pour le mapping automatique...
Mais moi je ne trouve pas anormal que ça ne fonctionne pas. Ça fonctionnait avant, mais c'était bien dit de ne pas le faire (je crois même que c'était écrit dans la doc de MX).
La meilleure solution c'est faire un remplacement automatique des points lorsque tu parse ton xml... Plus sûr, car même si tu modifies le composant pour que ça fonctionne, tu peux te retrouver plus tard avec un autre cas du genre, aussi bien éliminer l'anomalie à la source...
a+
C'est sûr que ce n'est pas ce qu'il y a de mieux à faire, mais c'est juste que je m'attendais a ce que ce composant ai le même comportement que TextField, ce qui me paraissait plutôt logique ... :roll:
Mais surtout ce que je ne comprends pas, c'est pourquoi ca ne marche pas. Le composant utilise t-il (ou teste-t-il) un this._name ?!? 8O Si c'est le cas, je ne vois pas pourquoi ?!? A partir du moment ou j'arrive à y accéder avec la notation par crochets, pourquoi cela bugerrai-t-il aprés ?!? En théorie, il ne devrait utiliser que des this ... :roll:
Je me suis donc résolu à remplacer les points par des tirets ... :?
Fil des commentaires de ce billet