2016-12-07 7 views
1

私は次の単語にスペースを置いて別のレインボー単語を作成すると、1つの単語にリアルタイムの虹のテキストを取得し、赤にリセットしようとしています。Actionscript 2を使用して1つのテキストフィールドに2つの色を表示

たとえば、文字列「his forgiveness」を入力する場合は、「h」を赤、「i」をオレンジ、「s」を黄色、「s」を黄色、「f」を赤、 「オ」はオレンジ、「r」はイエロー、「g」はグリーン、「i」はブルー、「v」はインディゴ、「e」はバイオレットである。残りの "ネス"はすべて紫色であることができますが、私は気にしません。私はちょうど元の概念をダウンする必要があります。 これまでのところ、私はキー入力でテキスト領域全体の色を変更することはできますが、文字列の文字は変更できません。

このクイック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) ムービーをテスト

(3/4) "INP"、インスタンス名を入力ボックスを作成します。

(4/4)テキストボックスを選択し、入力を開始します。

テキストボックス全体を、デフォルトの色から黄色、赤色、オレンジ色に変更するだけです。真の虹のコードを手に入れることは、あなたが手伝ってくれるのを待っているでしょう。あなたがテキストフィールドに、このプロパティを使用する必要があり、単一のテキストフィールドに異なる色を実現するために

答えて

0

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

またはあなたがそうするようにTextFormatクラスを使用することができます。

あなたのやり方は次のとおりです。

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++; 
     } 
    } 

} 

}

これを使用すると、it.Create新しいAS3フロリダ州を実装し、基本クラスとしてこれを割り当てる方法:

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.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); 
    } 
} 

}

はどこに新しいテキストを入力しても問題ありません

+0

私はそれを少し前にしましたが、色々なインデックスで色を変えることができたのでまだそれをスクラップしなければなりませんでした。テキストフィールドのインデックスではなく、単語カウントに基づいて文字が当初割り当てられた色です。そうすれば、後続の文字が追加された文字ごとに色が変わることなく、前の言葉を編集することができます。それが私が立ち往生した場所です。キーを1回押すたびに+1をカウントし、スペースを押すたびに1にリセットするキーカウンタを作った。次に、フォーマットに数字を割り当てます。私は何をしたいのかを行うためにsetTextFormatまたはsetNewTextFormatを得ることができませんでした。 –

+0

@RobertBrooks私はあなたにそれを行う方法を示すために私の答えを編集しました。必要なだけ多くの色の値で配列の値を変更してください。役に立つと思ったら私の答えを最高に設定してください – Delcasda

+0

AS2のコードはすべてですか?私はAS3を持っていません。それがAS2の場合は、上記の5つのコードボックスのどれを使用しますか?私はそれを動作させるためにそれらを組み合わせますか? –

関連する問題