Форум 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=100247)

BrainProof 22.08.2007 21:56

Изменение размера текстового поля!
 
Добрый вечер!

Ситуация такая:
1. есть флеш ролик
2. есть строковая переменная в этом ролике, при том строка меняется (как не важно)
3. есть Dynamic Text Field и ему присваевается эта переменная -> в поле появляется строка

НО

поле допустим имеет ширину 300 пикс. и высоту 26 пикс., т.е. грубо говоря туда поместится две строки по 40 символов. 80 Символов! А если в переменной будет строка большей длины, то остатки не будут видны смотрящему!

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

Спасибо!

etc 22.08.2007 22:30

autoSize

BrainProof 22.08.2007 23:47

так, автосайз я не понял как работает, то можно все реализовать через TextField._height=TextField._textHeight, аналогично если надо в ширину... =)

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

Mr. Fixit 23.08.2007 00:06

смотри в Хелпе:
align (TextFormat.align property).

Вот например:
Код:

var f_tf:TextFormat = new TextFormat();
f_tf.align = "center";

var field_txt:TextField = this.createTextField("field_txt", this.getNextHighestDepth(), 100, 100, 200, 50);
field_txt.text = 'Macromedia Flash 9';
field_txt.border = true;

field_txt.setTextFormat(f_tf);


etc 23.08.2007 00:07

Откройте хелп по автосайзу.

Mr. Fixit 23.08.2007 00:15

если есть необходимость использовать autoSize, можно писать при создании Текстового Поля так:
Код:

var field_txt:TextField = this.createTextField("field_txt", this.getNextHighestDepth(), 100, 100, 0, 0);
field_txt.autoSize = true;
field_txt.text = 'Macromedia Flash 9';


BrainProof 23.08.2007 13:09

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

Код:

on(release)
{
       
var f_tf:TextFormat = new TextFormat();
f_tf.align = "center";

var field_txt:TextField = this.createTextField("field_txt", this.getNextHighestDepth(), 100, 100, 200, 50);
field_txt.border = true;
field_txt.type="dynamic";
field_txt.variable='cucu';
cucu='sdfsdf';
field_txt.setTextFormat(f_tf);
       

}


жму кнопку, и в указанной области ничего не появляется! При наведении туда мышой, курсор меняется, но текста нет! и бордера нет!

извиняюсь! сам догадался!
надо при объявлении переменной другое имя использовать! чтоб потом уже обращаться к объекту на форме!


Код:

on(release)
{
       
var f_tf:TextFormat = new TextFormat();
f_tf.align = "center";

var field_txt1:TextField = this.createTextField("field_txt", this.getNextHighestDepth(), 100, 100, 200, 50);
field_txt.border = true;
field_txt.type="dynamic";
field_txt.variable='cucu';
cucu='sdfsdf';
field_txt.setTextFormat(f_tf);
       

}


BrainProof 23.08.2007 13:56

И снова препятствие! Необходимо создавать несколько текстовых полей, притом в коде к ним после создания надо обращаться!

что имеем:

Код:

var field_txt_my:TextField = this.createTextField("field_txt"+i, this.getNextHighestDepth(), 5, 5, 190, 20);
field_txt1.border = true;
field_txt1.type="dynamic";
field_txt1.variable='cucu'+i;
cucu1='значение';

предположим, что i на данном этапе равно 1.
тогда у нас создается поле с instance name = field_txt1 и переменная для этого поля имеет имя = cucu1.

Вот приведенный код работает! Но цифры 1 (красным) я написал в ручную на этапе программирования! Как мне их получить динамически, т.е. как мне обратиться к field_txt1 и cucu1?

iNils 23.08.2007 14:26

BrainProof, ваш зеленый текст в темном варианте форума, совсем не виден.

etc 23.08.2007 14:36

this['field_txt'+i]

Mr. Fixit 23.08.2007 15:42

BrainProof
Советую вообще забыть писать код в кнопке, особенно подобного рода вещи.

BrainProof 23.08.2007 18:08

Цитата:

Сообщение от Mr. Fixit
BrainProof
Советую вообще забыть писать код в кнопке, особенно подобного рода вещи.

Спасибо, учту! Просто я разбираюсь и без всяких идей глубоких сделал так, чтоб понять как работает динамическое создание поля... не все получилось, поэтому обратился к вам всем за помощью!

Спасибо!

BrainProof 24.08.2007 18:27

Доброго времени суток еще раз!

Столкнулся с очередной проблемой!
Создаю радиобаттон:

Код:

import mx.controls.RadioButton;
createClassObject(RadioButton,'rb'+i,this.getNextHighestDepth());
this['rb'+i]._x=0;
this['rb'+i]._y=0;
this['rb'+i].groupName='1';

Подскажите, пожалуйста, как мне ему сделать обработчик события на onClick! Как я понял из хелпа просто создаем функцию, но ничего не получается!

И второй вопрос:

Сцена имеет фиксированный размер в ширину и неопределенный размер в высоту (зависит от наполнения, создаваемого динамически с экшен-скрипт)! Т.е. по завершении работы скрипта я знаю высоту!

Мне сцена необходима в html! Там я соответсвенно пишу тэги и в них указываю высоту и ширину! Но я не знаю высоты на тот момент! А происходит вот что! Допустим в теге я пишу высота 300! Если наполнение меньше, то остается пустое место! Если наполнение больше, то нижний его (наполнения) край не виден!

Поэтому в моем уме пока родились две идеи...

1. Указать любую высоту. После выполнения скрипта во флэше передать это число в браузер ява-скрипту! И из явы уже поменять циферку в тэгах! Но меняют смущают сомнения, что размер ролика не изменится...

2. Может есть способ использования ролиха в хтмл без явного указания размеров и тогда он будет с родными размерами! А родные размеры менять в экшен-скрипте после всех процессов!

Вообщем, подскажите пожалуйста, как быть!

Спасибо!


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

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