J'ai trouvé une solution de regarder Docs, et ce tip. Les deux éléments suivants fonctionnent parfaitement pour moi avec un retour à la ligne multiligne sur une seule ligne (juste retour à la ligne, et \ n), et un retour à la ligne sans ligne (juste \ n).
Version courte assomptive (ne pas utiliser ce):
var totalLines = textField.bottomScrollV - textField.scrollV + textField.maxScrollV;
var metrics = textField.getLineMetrics(0);
var gutter = 2;
var actualHeight = (metrics.ascent + metrics.descent) * totalLines + (totalLines - 1) * metrics.leading + 2 * gutter;
version plus longue de mieux où les lignes ont des paramètres différents (à utiliser):
var gutter = 2;
var totalLines = textField.bottomScrollV - textField.scrollV + textField.maxScrollV;
var actualHeight = 0;
var prevLeading = 0;
for (var i = 0; i < totalLines; i += 1)
{
var metrics = textField.getLineMetrics(i);
actualHeight += metrics.ascent + metrics.descent + prevLeading;
prevLeading = metrics.leading;
}
actualHeight += 2 * gutter;
Pour un seul test en ligne avec une ligne image où textField height me donne 32, textHeight me donne 39, la hauteur calculée (effectiveHeight ci-dessus) est de 34. Pour un test multi-ligne où la hauteur est de 97,20, textHeight est 23,79, actualHeight est 97,15. Cette hauteur réelle inclut la gouttière des deux côtés, mais supprime la ligne de fuite s'il y en a.
Eh bien peut-être que j'avais quelque chose de mal dans mon code, ça va maintenant. Je ne peux pas vraiment me rappeler comment ou quand je l'ai réparé. – Lahey
La hauteur TextField est en fait (textHeight + 4). Le TextField inclut une gouttière 2px autour du texte, de sorte que la hauteur du TextField sera automatiquement ajustée à textHeight + (2px top gutter) + (2px bottom gutter) si autoSize est autre chose que TextFieldAutoSize.NONE. Voir: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/text/TextLineMetrics.html et http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/ flash/text/TextField.html # autoSize Si vous définissez WordWrap sur true, le redimensionnement automatique horizontal s'arrêtera, mais il sera automatiquement redimensionné verticalement. – Triynko