TextFieldAutoSize et textWidth en AS3
Je suis en train de dessiner un arrière-plan d'un champ de texte en AS3.
J'ai un Champ de texte avec une police intégrée et l'utilisation de la propriété autoSize = TextFieldAutoSize.De GAUCHE. - Je attribuer le texte de la zone de texte puis d'appeler essayez de dessiner un roundedRect à l'aide de la textWidth de la zone de texte. Le texte de la largeur de champ est toujours plus petite que la largeur du texte.
Est-il une autre façon d'obtenir le véritable textwidth? J'ai fait un peu rapide de google cherché mais je n'ai rien trouvé.
Code:
var tfProgramName:TextField = TextUtil.createTextField(true,"Arial",20,true);
tfProgramName.width = 100;
tfProgramName.autoSize = TextFieldAutoSize.LEFT;
tfProgramName.x = 5;
tfProgramName.y = 5;
addChild(tfProgramName);
tfProgramName.text = _program.title;
background.graphics.clear();
background.graphics.beginFill(0xFF0000,0.75);
background.graphics.drawRoundRect(0,0,tfProgramName.textWidth+10,this.height+10,5,5);
background.graphics.endFill();
textWidth dans mon cas, c'est quelque chose comme 373, mais il devrait être plus proche de 400. C'est vraiment proche, mais il ne semble pas le prendre en compte la police ou la taille de la police.
Désolé les gars, il n'y a pas de réponse. Il n'y a pas de problème lié à la largeur du texte. Le parent MovieClip a été mis à l'échelle vers le bas, mais depuis ma police n'est pas vraiment à son intégration a été mise à l'échelle vers le bas de mon arrière-plan, mais pas dans mon texte. J'ai donc pensé qu'il n'était pas de trouver la bonne largeur. Une fois que j'ai résolu le embed problème et des questions d'échelle, tout a fonctionné correctement.
OriginalL'auteur Alexandru Petrescu | 2011-02-10
Vous devez vous connecter pour publier un commentaire.
Je ne peux pas promettre qu'il sera mieux, mais jetez un oeil à TextLineMetrics Il vous donne plus d'informations que n'importe quoi d'autre, donc c'est probablement votre meilleur pari.
OriginalL'auteur Tyler Egeto
La Classe TextField n'a pas seulement l'attribut .largeur, mais aussi .textWidth, qui sera de retour le réel TextWidth. Afin d'obtenir le point de départ de la zone de texte, vous aussi besoin de la Position x, que vous pouvez obtenir avec le TextLineMetrics, tout comme Tyler a écrit:
et la largeur sera soit:
ou
OriginalL'auteur Björn Kechel
Ce que vous pourriez essayer de faire est d'utiliser les valeurs de retour des Champs de getCharBoundaries() ou getCharIndexAtPoint(). Le Champ de la propriété textWidth semble toujours être désactivé par un couple de pixels, il sera de retour une certaine largeur petits que la largeur réelle de votre texte. LineMetrics peut aussi aider, ne l'ai pas utilisé moi-même bien que.
OriginalL'auteur biril