AS3 закругленное текстовое поле
-
11-07-2019 - |
Вопрос
Кто-нибудь знает, как создать динамическое текстовое поле с видимой границей и закругленными углами в AS3?
Я думаю, что мне, возможно, придется создать скругленный видеоклип, изменить его размер и поместить его позади текста.
Я пробовал это, но я не вижу никаких изменений.
var styleRound:StyleSheet = new StyleSheet();
styleRound.parseCSS("h4{cornerRadius:10;borderStyle: solid; borderThickness: 1;}");
tf.htmlText = "<h4>" + hotspotData.caption + "</h4>";
tf.styleSheet = styleRound;
Решение
Вот список доступных стилей CSS для текстовых полей в ActionScript 3 . Извините, угловой радиус отсутствует.
Вы можете включить границу для текстового поля в объектах TextField пограничное свойство . Но нет ничего доступного за углом.
Я предлагаю вам создать новый компонент и самостоятельно добавить рамку в виде спрайта под TextField. Что-то вроде:
package
{
import flash.display.Graphics;
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class TextBorder extends Sprite
{
private static const CORNER_RADIUS:int = 5;
// display objects
private var background:Sprite;
private var field:TextField;
// properties
private var _text:String;
public function TextBorder()
{
background = new Sprite;
field = new TextField;
field.autoSize = TextFieldAutoSize.LEFT;
addChild(background);
addChild(field);
// TESTING:
text = "Hello World";
}
public function set text(newText:String):void
{
_text = newText;
display();
}
public function get text():String
{
return _text;
}
private function display():void
{
field.text = _text;
var g:Graphics = background.graphics;
g.clear();
g.lineStyle(0, 0x0);
g.beginFill(0xFFFFFF);
g.drawRoundRect(0, 0, field.width, field.height, CORNER_RADIUS);
}
}
}
Другие советы
В итоге я создал прямоугольник со скругленными углами и экспортировал его в свой собственный класс - hotspotBG.
var hotspotBackground:hotspotBG = new hotspotBG();
hotspotBackground.width = textField.width + 10;
caption.addChild(hotspotBackground);
Вы не можете самостоятельно изменять текстовое поле, так как с 2014 года Flash этого не позволяет.
Что вы можете сделать, это удалить фон и границы, который оставит текстовое поле полностью прозрачным, затем добавьте изображение (инструмент прямоугольник это самый простой способ сделать это) в конце текстового поля, так что текстовое поле находится сверху изображения (по оси Z)
Это может быть не так, как вы думали, но, черт возьми, это работает!
// вы удаляете фон и границы
// и заменяем их изображением
textbox.background = ложь;
textbox.border = ложь; код> р>
Можете ли вы просто использовать стили CSS? Что-то вроде:
TextInput {
borderStyle: solid;
borderThickness: 1;
cornerRadius: 2;
}
Я не проверял это, но это должно дать вам закругленный угол. Р>