AS3覚え書き6 :テキスト

TextFieldクラス

テキストを表示するには、TextFieldクラスを利用します。TextFieldクラスのプロパティには以下のものがあります。

var myTextField :TextField = new TextField();
myTextField.text = "12345";			
addChild(myTextField);
色の設定
myTextField.background = true;		//背景色の設定ON/OFF
myTextField.backgroundColor = 0xFFCCAA;	//背景色
myTextField.border = true;		//境界色設定ON/OFF
myTextField.borderColor = 0xFFCCAA;	//境界色
myTextField.textColor = 0xCCAA99;	//テキストの色
テキストの属性
myTextField.sharpness = 10; //フォントのシャープネス
myTextField.thickness = 30; //太さ

アンチエイリアスはAntiAliasTypeクラスをインポートして、NORMAL/ADVANCEDで設定します。

import flash.text.AntiAliasType;
myTextField.antiAliasType = AntiAliasType.NORMAL;
myTextField.antiAliasType = AntiAliasType.ADVANCED;
テキストフィールドの属性

テキストの整列を設定するにはautoSizeプロパティを使います。値を設定するためにはTextFieldAutoSizeクラスを利用します。

import flash.text.TextFieldAutoSize;
myTextField.autoSize = TextFieldAutoSize.NONE;
myTextField.autoSize = TextFieldAutoSize.LEFT;
myTextField.autoSize = TextFieldAutoSize.RIGHT;
myTextField.autoSize = TextFieldAutoSize.CENTER;

その他整形関連のものです。

htmlTextField.multiline = true;     //多段行モード
htmlTextField.wordWrap = true;      //改行ON
htmlTextField.condenseWhite = true; //空白無視

テキストフィールドを文字入力可能、文字入力禁止にするにはtype プロパティを使います。また値としてTextFieldTypeクラスを利用します。パスワード入力に設定する場合はdisplayAsPasswordフラグをtrueに設定します。

import flash.text.TextFieldType;
myTextField.type = TextFieldType.DYNAMIC;
myTextField.type = TextFieldType.INPUT;
myTextField.displayAsPassword = true;

テキストフィールドのサイズや文字数を調べるには次のようなプロパティを利用します。

trace(myTextField.textWidth);
trace(myTextField.textHeight);
trace(myTextField.length);

HTMLとスタイルシートの表示

テキストフィールドにHTMLを表示させるにはhtmlTextプロパティを、スタイルシートを設定するにはstyleSheetプロパティを設定します。
スタイルシートを表すStyleSheetクラスに、タグの名前とタグを表すObjectクラスのインスタンスをセットで登録します。
タグを表す各インスタンスには、colorやfontSize,fontStyleなどの属性を追加しておきます。スタイルシートクラスからタグの情報を登録するにはsetStyleを、取得するにはgetStyleを利用します。

var htmlTextField :TextField = new TextField();
htmlTextField.width = 300;
htmlTextField.height = 200;

var style:StyleSheet = new StyleSheet();
//タグの生成
var body:Object = new Object();
var p:Object = new Object();
body.color = "#AACCCC";
//タグの登録
style.setStyle("body", body);
style.setStyle("p", p);
//タグの取得
p = style.getStyle("p");
if (body != null) {
	p.color = "#AA55FF";
}
style.setStyle("p",p);
//スタイルシートを設定
htmlTextField.styleSheet = style;			

スタイルシートの情報をテキストフィールドに設定した後にHTMLをhtmlTextプロパティに設定します。
タグの種類によっては、改行モードでないと動かないものなどがあるので個別に設定する必要があります。

htmlTextField.multiline = true;
htmlTextField.wordWrap = true;
htmlTextField.condenseWhite = true;

htmlTextField.htmlText = "<body>body<a href=\"http://127.0.0.1\">link</a><br>\
<b>bold</b>\
<br>\
<i>italic</i><br>\
<li>list</li><br>\
<p>paragraph</p><br>\
<u> underbar </u><br>\
<font size =\" 22\"> font size = 22</font><br>\
<img src=\"test.jpg\"></body>\
";
メソッド

TextFieldクラスのメソッドには、文字列の情報にアクセスするもの、文字列を操作するものがあります。

テキストの取得

  • getLineLength(lineIndex:int):int
  • getLineText(lineIndex:int):String

テキストのフォーマット変更

  • getTextFormat(beginIndex:int = -1, endIndex:int = -1):TextFormat
  • setTextFormat(format:TextFormat, beginIndex:int = -1, endIndex:int = -1):void

追加

  • appendText(newText:String):void

置換

  • replaceText(beginIndex:int, endIndex:int, newText:String):void
  • replaceSelectedText(value:String):void

TextFormatクラス

TextFormatはテキストの細かい属性を設定するためのクラスです。TextFormatインスタンスに以下のようなプロパティを設定した後、setTextFormatでTextFieldに設定します。

var myTextFormat:TextFormat = new TextFormat();
myTextFormat.align = "left";			//整列
myTextFormat.blockIndent = 0;			//ブロックインデント
myTextFormat.bold = true;			//ボールド設定
myTextFormat.bullet = true;			//箇条書きリスト設定
myTextFormat.color = 0xFFCC00;			//フォント色
myTextFormat.font = "Times New Roman";	 	//フォントの種類
myTextFormat.indent = 0;			//インデント(左マージンと段落先頭)
myTextFormat.italic = true;			//イタリック設定
myTextFormat.kerning = true;			//カーニング設定
myTextFormat.size = 12;					//テキストサイズ
myTextFormat.underline = true;			//アンダーライン
//余白設定
myTextFormat.leftMargin = 20;
myTextFormat.letterSpacing = 5;	
myTextFormat.rightMargin = 0;	

var myTextField :TextField = new TextField();
myTextField.text = "123";
myTextField.setTextFormat(myTextFormat);

addChild(myTextField);