问题 使用Actionscript 3在一个文本字段中的两种颜色


是否可以使用Actionscript 3.0在一个文本字段中使用两种文本颜色?

例如:我怎么能像第一个字符串黑色和第二个字符串红色?

使用单一颜色时,这是我的代码:

    public function logs(txt)
    {
        if (txt == '')
        {
            textLog.text = "Let's Open up our treasure boxes !!!";
        }
        else
        {
            textLog.text = '' + txt + '';
        }
        textLog.x = 38.60;
        textLog.y = 60.45;
        textLog.width = 354.50;
        textLog.height = 31.35;
        textLog.selectable = false;
        textLog.border = false;
        var format:TextFormat = new TextFormat();
        var myFont:Font = new Font1();
        format.color = 0x000000;
        format.font = myFont.fontName;
        format.size = 18;
        format.align = TextFormatAlign.CENTER;
        format.bold = false;
        textLog.embedFonts = true;
        textLog.setTextFormat(format);
        this.addChild(textLog);
    }

5235
2018-01-04 03:02


起源



答案:


setTextFormat 您可以指定起始索引和结束索引。您还可以使用html将文本渲染为html textLog.htmlText

首先设置文本

var t:TextField  = new TextField();
t.text = "BLUEGREEN";
addChild(t);

然后方法1

var format1:TextFormat = t.getTextFormat(0, 4);
format1.color = 0x0000ff;
t.setTextFormat(format1, 0, 4);


var format2:TextFormat = t.getTextFormat(5, t.length);
format2.color = 0x00ff00;
t.setTextFormat(format2, 5, t.length);

或方法2

t.htmlText = '<font color="#0000ff">BLUE</font><font color="#00ff00">GREEN</font>';

16
2018-01-04 03:11



我怎么能这样做?你想举个例子吗? - Khairu Aqsara
我用样本修改了答案。请检查。请记住,您需要在设置文本后应用格式。 - Diode
请用 .length 如果您不想硬编码,则设置索引的字符串属性。 - Diode
谢谢@Diode,但问题是文字是动态的,根据未定义的字符串,就像你发现的那样:等等....或者你找到了100个硬币,有些时候不是所有的文字都是两种颜色,它只是一种颜色,无论如何它不是所有的时间都有两种颜色,而不是所有它们都有相同的长度,你想解释一下我怎么办这样的问题?,我编辑了这个问题,再次感谢二极管 - Khairu Aqsara
这就是我要求使用的原因 .length 字符串的属性。这里的示例代替(0,4),你必须使用 (0, firstString.length)。 - Diode


答案:


setTextFormat 您可以指定起始索引和结束索引。您还可以使用html将文本渲染为html textLog.htmlText

首先设置文本

var t:TextField  = new TextField();
t.text = "BLUEGREEN";
addChild(t);

然后方法1

var format1:TextFormat = t.getTextFormat(0, 4);
format1.color = 0x0000ff;
t.setTextFormat(format1, 0, 4);


var format2:TextFormat = t.getTextFormat(5, t.length);
format2.color = 0x00ff00;
t.setTextFormat(format2, 5, t.length);

或方法2

t.htmlText = '<font color="#0000ff">BLUE</font><font color="#00ff00">GREEN</font>';

16
2018-01-04 03:11



我怎么能这样做?你想举个例子吗? - Khairu Aqsara
我用样本修改了答案。请检查。请记住,您需要在设置文本后应用格式。 - Diode
请用 .length 如果您不想硬编码,则设置索引的字符串属性。 - Diode
谢谢@Diode,但问题是文字是动态的,根据未定义的字符串,就像你发现的那样:等等....或者你找到了100个硬币,有些时候不是所有的文字都是两种颜色,它只是一种颜色,无论如何它不是所有的时间都有两种颜色,而不是所有它们都有相同的长度,你想解释一下我怎么办这样的问题?,我编辑了这个问题,再次感谢二极管 - Khairu Aqsara
这就是我要求使用的原因 .length 字符串的属性。这里的示例代替(0,4),你必须使用 (0, firstString.length)。 - Diode


如果你想这样做,你需要创建一个控制功能。 char(这里的STRF DEFINE INDE)。

    var format2:TextFormat = textbox.defaultTextFormat;
    format2.color = 0x000000;
    textbox.defaultTextFormat = format2;

    if((textbox.text.charAt(3) == "d") && ( textbox.text.charAt(4) == "i")){            
        var format1:TextFormat = textbox.defaultTextFormat;
        format1.color = 0xFF0000;
        textbox.setTextFormat(format1, 3, 5);}
    else{
        textbox.setTextFormat(textbox.defaultTextFormat);}

0
2017-07-27 12:24