![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2009
Адрес: Москва [СЗАО]
Сообщений: 107
|
Добрый вечер.
Есть динамическое текстовое поле. Необходимо узнать длину строки и общее кол-во строк текстового поля, а не загружаемого в него текста. Текст загружается из XML-тэга из внешнего XML-файла, поэтому привожу только часть кода, отвечающую за параметры textField. Текст в textField отображается корректно, нужно только получить кол-во строк и кол-во символов в одной строке tfText.multiline = true; tfText.wordWrap = true; tfText.selectable = false; tfText.embedFonts = true; tfText.appendText(xmlTextList[j]); trace(tfText.length); //Возвращает 712 - правильно trace(tfText.numLines); //Возвращает 1 - я так понял мне возвращают кол-во строк загружаемого текста, а не их кол-во в textField. trace(tfText.getLineLength(0)); textField //Возвращает 712 - ну и соответственно раз строка одна, то и символы в ней все |
|
|||||
|
Нет. Просто одна строка длинной 712 символов. Строки разделяются символом \n. Требуется узнать число получившихся строк из за переносов?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Mar 2009
Адрес: Москва [СЗАО]
Сообщений: 107
|
Да. Но перенос осуществляется по достижении правой границы textField, то бишь Flash сам расставляет переносы в зависимоcти от ширины textField.
Последний раз редактировалось niks_13; 07.05.2011 в 00:56. |
|
|||||
|
Меня тоже озадачивал этот вопрос в неочень давнем времени, но в моём случае мне вполне подходила и высота в пикселях и я заюзал textHeight.
Пожалуй, присоединюсь к вопросу. Если есть желание попробовать найти ответ самому - попробуйте посмотреть в сторону maxScrollH и иже с ним. Я бы начал поиск ответа оттуда.
__________________
Тут мужик танцует и поёт про флэш Последний раз редактировалось Psycho Tiger; 07.05.2011 в 03:17. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Добавлено через 8 минут
Хотя у меня и numLines то же самое возвращает, уж не знаю, что у Вас случилось. Добавлено через 22 минуты И да, getLineLength() тоже исправно работает. Я думаю у Вас что-то в настройках поля не так. Например, в Вашем фрагменте кода указано что шрифт внедренный, но никаких назначений ТекстФормата не прописано. Поэтому сделать выводы, в чем ошибка, невозможно.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Mar 2009
Адрес: Москва [СЗАО]
Сообщений: 107
|
Wolsh
А никакого текст формата я и не задавал, мне кто-то говорил, что надо прописывать для корректоного отображения, я и прописал. Добавлено через 4 часа 14 минут Всё равно возвращает 1. Может всё дело в том, что в моём XML весь текст без переносов? Но это ж бред. Нельзя же подгонять текст под код. Я хочу получить кол-во строк, к-рые создаёт textField, а получаю кол-во строк XML'а =(( Возникла идея, но я не знаю как реализовать: Мы же знаем ширину textField. Посчитать кол-во символов, помещающееся на эту самую ширину при текущем форматировании текста. - это длина строки. Разделить общее кол-во символов на получившуюся длину строки - получим кол-во строк. Замудрёно, но по-моему должно прокатить. Есть идеи реализации сего алгоритма? Последний раз редактировалось niks_13; 07.05.2011 в 12:50. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Не надо выдумывать костыли и хаки, надо найти свою ошибку. Методы прекрасно работают.
__________________
Reality.getBounds(this); |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
iiiiiiiiii wwwwwwwwww
__________________
Reality.getBounds(this); |
|
|||||
|
Возможно глупое подположение но вдруг вы хотите чтоб оно вам по буквам переносило?
- переносит только по словам. т.е. только после пробелов. Если строка длинная и без пробелов то ничего никуда не перенесется и будет таки одна строка.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Регистрация: Mar 2009
Адрес: Москва [СЗАО]
Сообщений: 107
|
Wolsh
Я так понял то, что в архиве Вы выложили это на Flex'е написано. У меня Flash. Dukobpa3 У меня обычный текст. Слова разделены пробелами. И именно так и надо, чтобы они переносились - по словам. Вот полный код создания текстового поля и все его параметры. Полнее привести не могу. var tfText:TextField = new TextField(); tfText.type = TextFieldType.DYNAMIC; if (xmlTextList.attribute('textBorder')[j] == "true") { tfText.border = true; } else { tfText.border = false; } tfText.x = xmlTextList.attribute('textX')[j]; tfText.y = xmlTextList.attribute('textY')[j]; tfText.width = xmlTextList.attribute('textWidth')[j]; tfText.height = xmlTextList.attribute('textHeight')[j]; tfText.multiline = true; tfText.wordWrap = true; tfText.selectable = false; tfText.embedFonts = true; tfText.appendText(xmlTextList[j]); trace(tfText.length); trace(tfText.numLines); trace(tfText.getLineLength(0)); trace(tfText.getParagraphLength(0)); trace(tfText.bottomScrollV + tfText.maxScrollV - 1); tftTextX = tfText.x; tftTextY = tfText.y; tftTextHeight = tfText.height; tftTextWidth = tfText.width; var tftText:TextFormat = new TextFormat(); tftText.font = xmlTextList.attribute('textFont')[j]; tftText.color = xmlTextList.attribute('textColor')[j]; tftText.size = xmlTextList.attribute('textSize')[j]; if (xmlTextList.attribute('textBold')[j] == "true"){ tftText.bold = true;} else{ tftText.bold = false;} if (xmlTextList.attribute('textItalic')[j] == "true"){ tftText.italic = true;} else{ tftText.italic = false;} if (xmlTextList.attribute('textUnderline')[j] == "true"){ tftText.underline = true;} else{ tftText.underline = false;} tfText.setTextFormat(tftText); var textMount:Shape = new Shape(); textMount.graphics.beginFill(0xCCCCCC, 0.3); textMount.graphics.lineStyle(2, 0x000000, 0.3); textMount.graphics.drawRoundRect(xmlTextList.attribute('textX')[j]-10, xmlTextList.attribute('textY')[j]-5, tfText.width+35, tfText.height+10, 20); textMount.graphics.endFill(); var mcText:MovieClip = new MovieClip(); mcText.mouseChildren = true; mcText.x = xmlTextList.attribute('textX')[j]; mcText.y = xmlTextList.attribute('textY')[j]; addChild(mcText); mcText.addChild(textMount); mcText.addChild(tfText); <?xml version = "1.0" encoding = "utf-8"?> <objects> <text> <text1 textBorder = "false" textX = "20" textY = "150" textWidth = "200" textHeight = "100" textFont = "Tahoma" textColor = "0x993300" textSize = "16" textBold = "false" textItalic = "false" textUnderline = "false">Коллективное владение кодом позволяет каждому разработчику выдвигать новые идеи в любой части проекта, изменять любую строку программы, добавлять функциональность, фиксировать ошибку и проводить реорганизацию. Один человек просто не в состоянии удержать в голове проект нетривиальной системы. Благодаря коллективному владению кодом снижается риск принятия неверного решения (главным разработчиком) и устраняется нежелательная зависимость проекта от одного человека.</text1> </text> </objects> |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:35. |
|
|
« Предыдущая тема | Следующая тема » |
|
|