Два цвета в одном текстовом поле с помощью ActionScript 3
Возможно ли иметь два текстовых цвета в одном текстовом поле с помощью ActionScript 3.0?
ex: как я могу сделать, как первая строка черная, а вторая строка - красная?
Вот мой код при использовании одного цвета:
public function logs(txt)
{
if (txt == '')
{
textLog.text = "Let 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);
}
Ответы
Ответ 1
В setTextFormat
вы можете указать индекс начала и конца индекса. Вы также можете отображать текст как 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>';
Ответ 2
Если вы хотите сделать это, вам нужно создать функцию для управления. charAt (ОПИСАНИЕ ИНДЕКСА СТРОКИ ЗДЕСЬ).
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);}