1

我试图在一个单词中获取实时彩虹文本,并在我空格到下一个单词以创建另一个彩虹词时重置为红色。

例如,如果我想输入字符串“他的宽恕”,我希望“h”为红色,“i”为橙色,“s”为黄色,“f”为红色,“o”为为橙色,“r”为黄色,“g”为绿色,“i”为蓝色,“v”为靛蓝,“e”为紫色。剩下的,“ness”都可以是紫色的,我不在乎。我只需要最初的概念。到目前为止,我只能在按键上更改整个文本区域的颜色,而不是单个字符串字符。

要快进到我所在的位置,请遵循这个快速的 4 点流程:

(1/4)在舞台上粘贴以下代码。

counter = -1;
var key:Object = {onKeyDown:function () {
counter = counter+1;
if (counter == 1) {
    inp.textColor = 0xFF0000;
}
if (counter == 2) {
    inp.textColor = 0xFF9900;
}
if (counter == 3) {
    inp.textColor = 0xFFFF00;
}
}};
Key.addListener(key);

(2/4)用实例名称“inp”创建一个输入框

(3/4) 测试电影。

(4/4)选择文本框并开始输入。

我只有将整个文本框从默认颜色更改为红色,然后是橙色而不是黄色。如果您能提供帮助,获得真正的彩虹代码将是我期待已久的。

4

1 回答 1

0

为了在单个文本字段上实现不同的颜色,您必须在文本字段上使用此属性:

myTextField.html = true
myTextField.htmlText = 'bli bli bli<font color="#0000FF">bla bla bla/font>'

或者您可以使用 TextFormat 类来执行此操作。

这是你可以做的。

tField.text = "bli bli bli";
var tFormat:TextFormat = new TextFormat();
tFormat.color = 0xff0000;
tField.setTextFormat(0,5,tFormat);

tFormat.color = 0x33cc33;
tField.setTextFormat(5,9,tFormat);

为了在您键入时获得颜色,请使用此类:

package  {

import flash.text.TextField;
import flash.text.TextFieldType;
import flash.text.TextFormat;
import flash.events.KeyboardEvent;
import flash.events.Event;

public class ColorTextField extends TextField{

    var tf:TextFormat = new TextFormat();
    var ar:Array = new Array(0xFF0000,0x00FF00,0x0000FF,0x123456);

    public function ColorTextField() {
        // constructor code
        this.type = TextFieldType.INPUT;

        tf.size = 33;
        this.defaultTextFormat = tf;


        this.addEventListener(KeyboardEvent.KEY_UP,onKeyUp);
    }


    private function onKeyUp(event:KeyboardEvent):void{

        var index:int = 0;
        var colorIndex:int = 0;

        while (index < this.text.length){

            var char:String = this.text.substr(index,1);
            if(char == " "){
                colorIndex = 0;
            }else{
                tf.color = ar[colorIndex];
                trace(index + "-" +ar[colorIndex]);
                this.setTextFormat(tf,index,index+1);

                colorIndex++;

                if(colorIndex > ar.length-1){
                    colorIndex = ar.length-1;
                }
            }

            index++;
        }
    }

}

}

这就是你实现它的方式。创建一个新的 AS3 Fla 并将其分配为基类:

package  {

import flash.display.MovieClip;
import flash.text.TextField;
import flash.text.TextFieldType;


public class MyClass extends MovieClip {

    var tf:ColorTextField = new ColorTextField();

    public function MyClass() {
        // constructor code
        tf.width = 500;
        tf.text = "12345";

        this.addChild(tf);
    }
}

}

输入新文本的位置无关紧要

于 2017-01-18T20:18:05.650 回答