![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 34
|
Подскажите, пожалуйста, возможно ли разместить данные (например, два текстовых блока) в 2 колонки в TextField.
Может есть альтернативный вариант решения задачи: TextField отображает HTML документ. В зависимости от действий пользователя левая часть TextField остается неизменной, а в правой части TextField меняется текст. Спасибо. |
|
|||||
|
вряд ли есть что-то приличное для этой цели
скорее всего придется делать 2 textfield'a |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 1,155
|
Во Flash 10 пожалуйста, в 9-ом с извращениями
|
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
Для обычного текста:
/**
* Метод, заполняющий колонки текстом.
* Метод работает только с обычным (не html) текстом.
*
* @param str - текст, которым необходимо заполнить колонки
* @param array - массив, содержащий ссылки на текстовые поля (колонки)
* @return String - Остаток невместившегося текста. Если помеcтился весь текст, то результатом будет null.
*/
function setText (str:String, array:Array):String {
var arrayText:Array = str.split (" ");
var n:Number = 0;
var dx:Number = 0;
var strTemp:String = "";
var strBuffer:String = "";
for (var i:Number = 0; i < arrayText.length; i += dx++) {
strTemp = array[n].text;
strBuffer = "";
for (var j:Number = i; j < i + dx; j++) {
if (j == arrayText.length) {
break;
}
strBuffer += arrayText[j] + (j < arrayText.length - 1 ? " " : "");
}
array[n].text += strBuffer;
if (array[n].textHeight > array[n]._height - 4 && dx > 1) {
array[n].text = strTemp;
dx = 0;
} else if (array[n].textHeight > array[n]._height - 4) {
array[n++].text = strTemp;
if (array[n]) {
i--;
} else {
return str.substring (array[n - 1].text.length);
}
}
}
return null;
}
var array:Array = new Array ();
for (var i:Number = 0; i < 2; i++) {
var txt:TextField = this.createTextField ("txt" + i, this.getNextHighestDepth (), 10 + i * 110, 10, 100, 200);
txt.border = true;
txt.multiline = true;
txt.wordWrap = true;
array.push (txt);
}
setText ("Подскажите, пожалуйста, возможно ли разместить данные (например, два текстовых блока) в 2 колонки в TextField. Может есть альтернативный вариант решения задачи: TextField отображает HTML документ. В зависимости от действий пользователя левая часть TextField остается неизменной, а в правой части TextField меняется текст. Спасибо.", array);
|
|
|||||
|
Регистрация: Nov 2005
Сообщений: 1,155
|
В 9-ой версии это еще более менее удобно. В AS3 встроены методы определения положения определенного глифа. Я как то задавался такой же проблемой, выходило примерно так. Сначала определял номер последнего символа нижней строчки первого столбца. Затем просчитывал все открытые теги до этого символа. Запоминал эти теги, после чего создавал второе поле и заново открывал запомненые теги, что бы сохранить форматирование. В принципе ничего тяжелого, но выделять текст в обоих колонках все равно не получится
|
|
|||||
|
Регистрация: Nov 2005
Сообщений: 34
|
Пасибо, буду переходить на 9-ый
|
![]() |
![]() |
Часовой пояс GMT +4, время: 10:46. |
|
|
« Предыдущая тема | Следующая тема » |
|
|