AS3 закругленное текстовое поле - PullRequest
4 голосов
/ 03 августа 2009

Кто-нибудь знает, как создать динамическое текстовое поле с видимой границей и закругленными углами в AS3?

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

Я пробовал это, но я не вижу никаких изменений.

var styleRound:StyleSheet = new StyleSheet();
styleRound.parseCSS("h4{cornerRadius:10;borderStyle: solid; borderThickness: 1;}");
tf.htmlText = "<h4>" + hotspotData.caption + "</h4>";
tf.styleSheet = styleRound;

Ответы [ 4 ]

8 голосов
/ 03 августа 2009

Вот список доступных стилей 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);
    }
}

}
0 голосов
/ 19 декабря 2014

Вы не можете изменить текстовое поле само по себе, с 2014 Flash не допускает этого.

Что вы можете сделать, это удалить фон и границы, который оставит текстовое поле полностью прозрачным, затем добавьте изображение (инструмент прямоугольник это самый простой способ сделать это) в конце текстового поля, так что текстовое поле находится сверху изображения (по оси Z) * ​​1003 *

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

//you are deleting the background and the borders //and replacing them with an image textbox.background=false; textbox.border=false;

0 голосов
/ 03 августа 2009

Я закончил создание прямоугольника со скругленными углами во флеш-памяти и экспортировал его в свой собственный класс - hotspotBG.

var hotspotBackground:hotspotBG = new hotspotBG();
hotspotBackground.width = textField.width + 10;
caption.addChild(hotspotBackground);
0 голосов
/ 03 августа 2009

Можете ли вы просто использовать стили CSS? Что-то вроде:

TextInput { 
  borderStyle: solid; 
  borderThickness: 1; 
  cornerRadius: 2; 
}

Я не проверял это, но это должно дать вам закругленный угол.

...