Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   текстовое поле с высотой подстраивающейся под объем текста (http://www.flasher.ru/forum/showthread.php?t=191659)

syegorius 06.01.2013 04:45

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

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

Код AS1/AS2:

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 чем-то не подходит для вашей задачи?
Код AS1/AS2:

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, автору нужно было увеличивать размер самой флешки на странице.
А то, что пишете вы, делать не надо, поскольку есть
Код AS1/AS2:

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



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

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