Вычисление текстовой ширины в ActionScript и Flex

Я пытаюсь вычислить, как ШИРОКИЙ для создания моей кнопки, на основе текста, который она будет содержать, и когда я попытаюсь погуглить для того, как к calcuate что-то столь же упрощенное как ШИРИНА НЕКОТОРОГО ТЕКСТА, я иду косоглазый просто попытка пробраться через по-видимому бессмысленный тайный парадоксальный вуду. Может любой там помогать упростить для меня, как я записал бы функцию как это:

public function HowWideWouldThisTextBeIfItWereInThisButton(Text:String,Container:Button):int {
 ...
}

Заранее спасибо.

21
задан Joshua 26 May 2010 в 21:20
поделиться

4 ответа

Пока вы находитесь в UIComponent, вы можете использовать функцию measureText .

public function howWideWouldThisTextBeIfItWereInThisButton(text:String,container:Button):int {
   var lineMetrics:TextLineMetrics = container.measureText(text);
   return lineMetrics.width;      
}

При этом размер компонента гибкой кнопки должен автоматически соответствовать ширине текста, если вы не задали для него ширину. Таким образом, если вам нужна ширина текста, вы можете просто вызвать свойство textWidth.

21
ответ дан 29 November 2019 в 21:12
поделиться

Похоже, вы могли бы использовать textWidth

-1
ответ дан 29 November 2019 в 21:12
поделиться

Джошуа, это действительно помогает быть ясным. Вы говорите о TextField, MX Label, Spark Label, RichText и т. Д.? Различные текстовые компоненты используют разные текстовые механизмы, такие как FTE и TLF, и могут иметь разные решения. Я определенно хотел бы, чтобы у Adobe был хороший набор утилит или образец кода, который мог бы предсказать, какой будет размер шрифта, отображаемого на элементах управления, прежде чем вы действительно это сделаете. Но хорошая новость заключается в том, что в некоторых случаях, например, в старом добром TextField, вы можете предсказать это довольно хорошо. Вы просто создаете TextField, устанавливаете его поле textFormat, метод автоматического размера и текст. Вы должны получить его размер, прежде чем добавлять его куда-нибудь. Я не помню, какой был порядок, но я помню, что порядок, в котором вы устанавливали эти свойства, имеет значение. Если вы не можете понять, как это сделать, я могу привести пример кода. Теперь о новых, "улучшенных" компонентах, таких как Spark Labels - я буду недоволен, если найду чертовски способ ... потратил на это несколько часов и так и не нашел ... или кого-то, кто знает дорогу: P.

0
ответ дан 29 November 2019 в 21:12
поделиться

Вот , как это делается в Spark:

Я немного изменил - упростил - его пример здесь:

var textMetrics:TextLineMetrics = label.measureText( label.text );  
var textWidth:int = textMetrics.width; 
2
ответ дан 29 November 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: