PDA

Просмотр полной версии : текстовое поле с высотой подстраивающейся под объем текста


syegorius
06.01.2013, 04:45
доброе время суток!

написал такой кусок кода:


myVars = new LoadVars();
myVars.cheat = true;
myVars.item = item_id;

myVars.onLoad = function(success){
if(success){
putText(myVars.description_short)
}
else{
putText("Error connecting to server.");
}
}

myVars.sendAndLoad("/", myVars, "POST");

function putText(receivedText){
createTextField("cheated", 500, 0, 0, cheatWidth, 1000);
cheated.type = "dynamic";
cheated.text = receivedText;
if(receivedText!="Error connecting to server."){
cheated.textColor = 0x4C4C4C;
}
else{
cheated.textColor = 0xFF0000;
}
var textFormatString:TextFormat = new TextFormat();
textFormatString.font = "Tahoma";
textFormatString.size = 12;
cheated.setTextFormat(textFormatString);
}


сейчас в ф-цию createTextField я передаю высоту 1000 пикселей. если объем текста небольшой, то тогда будет свободное место. если текст большой - какая-то его часть исчезнет.

подскажите каким образом я могу сделать так что бы высота тестового поля всегда подбивалась под его объем, т.е. не было ни пустых мест и ни обрезания текста.

еще одна проблема - это то что swf-приложение я вставляю в html-код с помощью swfobject. там один из параметров это высота swf-приложение. т.е. мне нужно еще и правильно установить и это параметр, иначе приложение будет сплюснуто или растянуто.

подскажите как решить эту задачу.

заранее спасибо за помощь!

mooncar
06.01.2013, 10:46
Свойство TextField.autoSize (http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00001583.html) чем-то не подходит для вашей задачи?

cheated.multiline = true ;
cheated.autoSize = true ;

syegorius
06.01.2013, 16:44
спасибо! а как тогда еще указать в swfobject высоту самого приложения так, что бы она подстраивалась под высоту тестового блока?

mooncar
06.01.2013, 17:38
Даже с помощью SWFObject этого не решить - публикация флешки не изменяется динамически, флеш-объект внедряется в DOM-структуру документа на все время ее работы с неизменными параметрами.

Простого решения нет.
Но есть пара соображений.
1. Использовать для текстового поля скроллер (можно взять готовые компоненты). Это предполгает фиксированную высоту текстовго поля и возможность прокрутки текста.
2. Использовать технологию reach-banner'ов (погуглите). Если в лоб - то перепубликовывать флешку с помощью метода ExternalInterface.call, передавая в JavaScript значение высоты текстового поля. Но это "не айс" - будет заметное дергание, да и вообще вам может не подойти.
2а - публиковать флешку с заранее большой высотой, и открывать / закрывать ее по мере надобности, передавая значение высоты с помощью ExternalInterface.call. Тут надо хорошо поработать с версткой и функциями JS.

PS. Замечание по оформлению. Предложения должны начинаться с больших букв, на форуме пишем по-русски.

FRAG
29.01.2013, 19:08
Ну, еще как вариант: создать поле примерно в одну строку, скрыть его, поместить в него ваш текст, запустить цикл на проверку параметра maxscroll этого поля и увеличивать высоту поля до тех пор, пока maxscroll не станет равен единице.

mooncar
29.01.2013, 20:43
FRAG, автору нужно было увеличивать размер самой флешки на странице.
А то, что пишете вы, делать не надо, поскольку есть
cheated.multiline = true ;
cheated.autoSize = true ;