У меня проблемы с поиском ширины строки текста в объекте UITextField. Я знаю, что существуют различные методы, документированные, чтобы якобы сделать это, но они просто не работают. Существует один и только один метод, который выдает правильное значение, но требует использования свойства textField объекта mx.controls.Text. Если этот textField используется, тогда getCharBoundaries работает правильно, и вы можете просто сложить возвращенную ширину из серии обращений к нему, чтобы получить ширину строки текста.
Однако, если вы просто вызываете getCharBoundaries для отдельного TextField или UITextField (то есть того, который не является свойством MX: Text), тогда getCharBoundaries возвращает какое-то совершенно другое значение, которое существенно меньше, чем если бы оно вызывалось для свойства textField объекта Mx: текстовый объект. На самом деле это примерно на 25% меньше, чем правильное значение, но это даже не соответствует, потому что изменение размера шрифта и расхождение, кажется, изменяются нелинейно. Так что getCharBoundaries на самом деле возвращает в случае автономного UITextField, я понятия не имею.
Но на самом деле, вызовите любой другой метод для определения ширины текста TextField (кроме getCharBoundaries в объекте MX: Text), и вы получите то же ошибочное значение: TextField.getUITextFormat (). MeasureHTMLText (... ) .width (или measureText) и TextField.getLineMetrics (...). width - все возвращают одно и то же ошибочное значение. И вы можете сказать: «Ну, они, вероятно, просто возвращают ширину от левого крайнего пикселя в тексте до крайнего правого пикселя», за исключением того, что, как я уже сказал, в одном случае getCharBoundaries фактически возвращает полную ширину ячейки текста, это то, что я хочу (и затем при вызове из отдельного текстового поля какое-то совершенно другое значение.)
Но моя проблема впервые появилась, когда я попытался изменить объект MX: Text (внутри которого я мог успешно вызвать getCharBoundaries) на UITextField. Так что теперь ни getCharBoundaries, ни что-либо еще работает правильно для определения ширины текста. (Примечание: я на самом деле не отображаю поле UIText, а скорее использую его для обработки текста за кулисами, поскольку он значительно быстрее, чем MX: Text. Я устанавливаю значение UITextField.htmlText, а затем выполняю серию вызовов getTextFormat, setTextFormat и replaceText. И все это работает как и раньше с объектом Mx: Text, за исключением гораздо более быстрого. Единственная проблема заключается в том, что теперь, по-видимому, нет способа определить ширину текста для строки текста, хотя Adobe документирует все эти методы, которые должны это делать.
И вот мой вопрос: я захожу на Google, и комментариев к этому очень мало, и вообще нет никакого обходного пути, которое я видел где-либо задокументировано. Я видел одну ветку на actionscript.org пару лет назад, где кто-то еще сказал, что все эти методы ширины просто не работают. Это было подтверждено кем-то, но никакого решения не предоставлено. (Примечание: на этом плакате отмечалось, что ошибка, по-видимому, возрастала с увеличением размера шрифта и была не столь заметна при малых размерах шрифта, что, как я полагаю, может объяснить, почему она не была замечена.)
Но я скачал здесь Flex 4 некоторое время назад, и проблема все еще там. Так что просто интересно, действительно ли я единственный человек, который осведомлен об этом, или столкнулся с этим, или, возможно, кто-то указал, что я скучаю. Я предполагаю, что система отслеживания Flex Bug была бы для меня вариантом, но, вероятно, это будет Black Hole.
Так или иначе, просто интересно, кто-нибудь сталкивался с этим или нашел работу вокруг.