Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   numLines (http://www.flasher.ru/forum/showthread.php?t=162834)

Jitakuzu 04.08.2011 15:55

numLines
 
Доброго времени, появился вопрос - подскажите кто знает.
По какой причине TextField.numLines может выдавать не правильные результаты?
То есть, визуально текст состоит из трех строк, а метод выдает результат 2. Но не постоянно. Иногда правильно считает, иногда нет. Тестовое поле одно и тоже использую, только текст ему разный присваиваю.
Спасибо =)

i.o. 04.08.2011 16:04

возможно wordWrap = true

Jitakuzu 04.08.2011 16:08

Так и есть. Как это влияет на на результат? И, желательно, как избежать этого "бага", не отключая wordWrap?

i.o. 04.08.2011 16:09

не знаю. Ждите ответов от остальных :)

Jitakuzu 04.08.2011 16:11

эх.. жду =) Спасибо )

derhab 04.08.2011 16:55

попробовал, у меня вроде все ок, визуальное кол-во строк совпадает с тем что выдает numLines

Код AS3:

stage.addEventListener(MouseEvent.CLICK, onClick);
 
function onClick(e:MouseEvent):void
{
        tf.text = '';
        var str:String = '';
        for(var i:int = 0; i < 130; i++)
            str += String.fromCharCode(80 + Math.ceil(Math.random() * 40))
 
        tf.text = str;
        trace(tf.numLines) //всегда выводит 3, и визуально тоже 3
}
 
var tf:TextField = new TextField();
tf.width = 350;
tf.height = 200;
tf.x = 10, tf.y = 100;
tf.wordWrap = true;
addChild(tf);

может у вас форматирование... влияет на результат?

Jitakuzu 04.08.2011 17:03

У меня только в некоторых случаях неправильно выводило. Когда переносилось последнее слово и, например, если бы это слово было короче на один символ, то оно поместилось бы и на первой строке.
Помогло использование TextField.measuredHeight вместо TextField.numLines.

derhab 04.08.2011 17:07

странно, у меня ни при каких обстоятельствах numLines не подводит... ну по крайней мере в том простом примере

toFL 04.08.2011 17:22

Код AS3:

tf.appendText("");
trace(tf.numLines);

И будет вам счастье. У меня такое было в сочетании: styleSheet, as HTML, multiLine


Часовой пояс GMT +4, время: 19:52.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.