ページへ戻る

− Links

 印刷 

StarlingのTextField のソース :: NJF Wiki

xpwiki:StarlingのTextFieldのソース

« Prev[3]  
StarlingのTextFieldを使うとAS3と同様にしてテキストを表示できる。

(&font(Red){以下の内容はver1.xのみに対応しています。ver.2以降からTextFieldは大幅に変更されました};)

 var tf:TextField = new TextField(200, 30, "test",FONT_NAME,26,0xff0000);

右寄せ、左寄せなどは、
 tf.hAlign = HAlign.RIGHT;
 tf.vAlign = VAlign.BOTTOM;

とする。これは文字を寄せているだけなので、テキストフィールド全体の中心点についてはpivotXやpivotY、alignPivotなどを使う必要がある。

また、ビットマップフォントが登録されている場合は、そのままビットマップフォントの名前を指定するだけで、それが表示される。

注意事項として、
-サイズが小さくて文字がはみ出る場合は全く何も表示されないことがある。
-ビットマップフォント以外ではドローコールが結構増える
-より細かな設定はTextFieldを継承した自分のクラスを使って行う。

一つ目については、つねに大きめのサイズを指定することで回避できる。

二つ目は、パフォーマンスが必要とされるところではなるべくビットマップフォントを指定し、文字数が少ない場合はbatchableフラグをtrueにすると結構減る

 tf.batchable = true;

3つめについては、たとえば複数行表示で行間を8にしたければ、TextFieldを継承して、formatTextメソッドをオーバーライドする。

 class MultiLineTextField extends TextField {
 	public function MultiLineTextField (width:int, height:int, text:String, fontName:String = "Verdana", fontSize:Number = 12, color:uint = 0, bold:Boolean = false) {
 		super(width, height, text, fontName, fontSize, color, bold);
 		
 	}
 	override protected function formatText(textField:flash.text.TextField, textFormat:TextFormat):void 
 	{
 		super.formatText(textField, textFormat);
 		textField.multiline = true;
 		textFormat.leading = 8;
 		textField.setTextFormat(textFormat);
 	}
 }

これ以外のAS3にある細かなテキストの設定もformatText関数で行える

#related

« Prev[3]