PDA

Просмотр полной версии : Как сделать обводку текстового поля


Makcumka
07.02.2008, 15:05
Дано: динамически генерируется текст и для него создаётся TextField
Задача: Сделать так, чтобы этот текст выводился в прямоугольничке (с обводкой и фоном, как альтернативный текст к картинкам в браузере).

В голову приходит только решение "в лоб":
за текстом поместить MovieClip в котором нарисован прямоугольник нужного размера, но не понятно как узнать ширину/высоту динамически сгенерированного текста.
Как это сделать?

А может быть есть более изящные методы?

combo
07.02.2008, 16:11
Может я неправильно понял стуь проблемы, но в чем сложность узнать _width/_height сгенерированного textfield'a?

Obi
07.02.2008, 16:31
Ну вот как-то так:

var newMovieClip:MovieClip = _root.createEmptyMovieClip(mcName,Depth);
var newPromtTxt:TextField = newMovieClip.createTextField("promtTxt", Depth, 0, 0, 200, 1);

point1X = newPromtTxt._x-3;
point1Y = newPromtTxt._y-3;
point2X = newPromtTxt._x +newPromtTxt._width+3;
point2Y = newPromtTxt._y +newPromtTxt._height+3;
newMovieClip.lineStyle(1,borderColor,alpha);
newMovieClip.beginFill(BgColor,alpha);
newMovieClip.moveTo(point1X,point1Y);
newMovieClip.lineTo(point1X,point2Y);
newMovieClip.lineTo(point2X, point2Y);
newMovieClip.lineTo(point2X, point1Y);
newMovieClip.lineTo(point1X, point1Y);

MrPoma
07.02.2008, 16:46
var txt:TextField = this.createTextField('txt', 0, 0, 0, 200, 100);
txt.border = true;
txt.borderColor = 0xa5a57c;
txt.background = true;
txt.backgroundColor = 0xff;

Makcumka
07.02.2008, 22:41
combo, Obi, MrPoma, спасибо, но суть проблемы в том, что прямоугольник для текста должен быть минимальным, в котором бы помещался текст (именно в таком прямоугольнике появляется альтернативный текст в браузере).
Разобрался сам, решение было в использовании свойства autoSize:var txt:TextField = this.createTextField('txt', 0, 10, 10, 1, 1);
txt.border = true;
txt.borderColor = 0x666666;
txt.background = true;
txt.backgroundColor = 0xffff99;
txt.text = "Текст";
txt.autoSize = true;