テキストの表示

Flash Player 9 以降、Adobe AIR 1.0 以降

Adobe Flash Builder や Flash Professional などのオーサリングツールには、テキスト関連コンポーネントやテキストツールなどのいくつかのオプションがテキスト表示のために用意されていますが、テキストをプログラムによって表示する最も単純な方法はテキストフィールドを使用する方法です。

テキストのタイプ

テキストフィールド内のテキストのタイプは、そのソースによって次のように分類されます。

  • ダイナミックテキスト

    ダイナミックテキストには、テキストファイル、XML ファイル、さらにはリモート Web サービスなどの外部ソースからロードされたコンテンツが含まれます。

  • 入力テキスト

    入力テキストは、ユーザーが入力した任意のテキストまたはユーザーが編集可能なダイナミックテキストです。 入力テキストをフォーマットするスタイルシートを設定するか、または flash.text.TextFormat クラスを使用して、入力コンテンツのテキストフィールドにプロパティを割り当てることができます。 詳しくは、 テキスト入力のキャプチャ を参照してください。

  • 静止テキスト

    静止テキストは、Flash Professional でのみ作成できます。ActionScript 3.0 を使用して静止テキストのインスタンスを作成することはできません。ただし、StaticText および TextSnapshot などの ActionScript クラスを使用して、既存の静止テキストのインスタンスを操作することができます。詳しくは、 静止テキストの操作 を参照してください。

テキストフィールドのコンテンツの変更

flash.text.TextField.text プロパティにストリングを割り当てることにより、ダイナミックテキストを定義できます。次のように、ストリングをプロパティに直接割り当てます。

myTextField.text = "Hello World";

次の例に示すように、 text プロパティにスクリプトで定義した変数の値を割り当てることもできます。

package 
{ 
    import flash.display.Sprite; 
    import flash.text.*; 
 
    public class TextWithImage extends Sprite 
    { 
        private var myTextBox:TextField = new TextField(); 
        private var myText:String = "Hello World"; 
 
        public function TextWithImage() 
        { 
            addChild(myTextBox); 
            myTextBox.text = myText; 
        } 
    } 
}

または、 text プロパティにリモート変数の値を割り当てることができます。リモートソースからテキストの値をロードする方法には、以下の 3 つのオプションがあります。

  • flash.net.URLLoader および flash.net.URLRequest クラスは、ローカルまたはリモートロケーションからテキストの変数をロードします。

  • FlashVars 属性は、SWF ファイルをホストする HTML ページに埋め込むもので、テキストの変数の値を含めることができます。

  • flash.net.SharedObject クラスは値の永続ストレージを管理します。 詳しくは、 ローカルデータの保存 を参照してください。

HTML テキストの表示

flash.text.TextField クラスには htmlText プロパティが含まれており、このプロパティを使用すると、コンテンツをフォーマットするための HTML タグが含まれているストリングとして、テキストストリングを指定することができます。次の例に示すように、Flash Player または AIR でテキストを HTML としてレンダリングするには、 text プロパティではなく、 htmlText プロパティにストリング値を割り当てる必要があります。

var myText:String = "<p>This is <b>some</b> content to <i>render</i> as <u>HTML</u> text.</p>"; 
myTextBox.htmlText = myText;

Flash Player および AIR は、 htmlText プロパティでは、一部の HTML タグと HTML エンティティをサポートします。『ActionScript 3.0 リファレンス』の flash.text.TextField.htmlText プロパティの説明には、サポートされる HTML タグと HTML エンティティについての詳細情報が用意されています。

htmlText プロパティを使用してコンテンツを指定した後、スタイルシートまたは textformat タグを使用してコンテンツのフォーマットを管理することができます。詳しくは、 テキストのフォーマット を参照してください。

テキストフィールドでのイメージの使用

コンテンツを HTML テキストとして表示することには、テキストフィールドにイメージを含めることができるという利点もあります。 img タグを使用して、ローカルまたはリモートのイメージを参照し、関連付けられたテキストフィールドに表示させることができます。

次の例では、 myTextBox という名前のテキストフィールドを作成し、SWF ファイルと同じディレクトリに格納されている目の JPG イメージを、表示テキスト内に埋め込みます。

package 
{ 
    import flash.display.Sprite; 
    import flash.text.*; 
 
    public class TextWithImage extends Sprite 
    { 
        private var myTextBox:TextField; 
        private var myText:String = "<p>This is <b>some</b> content to <i>test</i> and <i>see</i></p><p><img src='eye.jpg' width='20' height='20'></p><p>what can be rendered.</p><p>You should see an eye image and some <u>HTML</u> text.</p>"; 
 
        public function TextWithImage() 
        { 
            myTextBox.width = 200; 
            myTextBox.height = 200; 
            myTextBox.multiline = true; 
            myTextBox.wordWrap = true; 
            myTextBox.border = true; 
 
            addChild(myTextBox); 
            myTextBox.htmlText = myText; 
        } 
    } 
}

img タグは、JPEG、GIF、PNG、および SWF ファイルをサポートします。

テキストフィールド内のテキストのスクロール

テキストが、テキストを表示するテキストフィールドよりも長くなる場合がよくあります。または、一度に表示可能なテキストより長いテキストを入力できる入力フィールドを使用する場合があります。 flash.text.TextField クラスのスクロール関連プロパティを使用して、長いコンテンツを垂直または水平方向に管理することができます。

スクロール関連のプロパティには、 TextField.scrollV TextField.scrollH maxScrollV および maxScrollH があります。これらのプロパティを使用して、マウスのクリックやキー押下などのイベントに応答します。

次の例では、フィールドで一度に表示可能な長さを超えるテキストを含むようにサイズが設定されたテキストフィールドを作成します。 ユーザーがテキストフィールドをクリックすると、テキストが垂直方向にスクロールされます。

package 
{ 
    import flash.display.Sprite; 
    import flash.text.*; 
    import flash.events.MouseEvent; 
 
    public class TextScrollExample extends Sprite 
    { 
        private var myTextBox:TextField = new TextField(); 
        private var myText:String = "Hello world and welcome to the show. It's really nice to meet you. Take your coat off and stay a while. OK, show is over. Hope you had fun. You can go home now. Don't forget to tip your waiter. There are mints in the bowl by the door. Thank you. Please come again."; 
 
        public function TextScrollExample() 
        { 
            myTextBox.text = myText; 
            myTextBox.width = 200; 
            myTextBox.height = 50; 
            myTextBox.multiline = true; 
            myTextBox.wordWrap = true; 
            myTextBox.background = true; 
            myTextBox.border = true; 
 
            var format:TextFormat = new TextFormat(); 
            format.font = "Verdana"; 
            format.color = 0xFF0000; 
            format.size = 10; 
 
            myTextBox.defaultTextFormat = format; 
            addChild(myTextBox); 
            myTextBox.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownScroll); 
        } 
 
        public function mouseDownScroll(event:MouseEvent):void 
        { 
            myTextBox.scrollV++; 
        } 
    } 
}