イナヅマTVログ

minimalcomps, TextAreaで日本語を入力したい

| 0件のコメント

@bit101 : Keith Peters 先生謹製 minimalcomps は Flash 標準のコンポーネントより軽量で操作性もよいスグレものです。
数多くのコンポーネントが用意されています。
詳細は Minimal Comps by BIT-101 で見ることができます。

英語しか使えないと誤解されているようだけど、チョコチョコっと2~3行足せば日本語も使えます。
誤解の元は “pf_ronda_seven.ttf” が添付され embedFonts が true に設定されてるからかもしれません。

TextAreaで日本語入力

左側は TextArea コンポーネントのノーマル状態です。
文字サイズは 8px とかなり小さなサイズに設定されており、pf_ronda_seven がフォントとして指定されています。

ノーマルのこの状態では日本語の入力ができません。

右側は TextArea コンポーネントを日本語を入力できるように変更したものです。
文字サイズ、文字色も変えています。

画像をクリックで入力デモが表示されます。

import flash.display.Sprite;
import flash.text.TextFormat;
 
import com.bit101.components.TextArea;
 
var sp1:Sprite = new Sprite();
sp1.x = 10;
sp1.y = 10;
var ta:TextArea = new TextArea(sp1);
ta.setSize(280, 100);
ta.autoHideScrollBar = true;
 
addChild(sp1);
 
var sp2:Sprite = new Sprite();
sp2.graphics.clear();
sp2.graphics.beginFill(0x32a41c);
sp2.graphics.drawRect(0, 0, 280, 100);
sp2.graphics.endFill();
sp2.x = 300;
sp2.y = sp1.y;
var ta2:TextArea = new TextArea(sp2, 1, 1);
ta2.setSize(278, 98);
ta2.autoHideScrollBar = true;
ta2.textField.embedFonts = false;
ta2.textField.defaultTextFormat = new TextFormat("_ゴシック", 13, 0xff0000);
 
addChild(sp2);

文字表示用コンポーネントの TextArea, Label などの親クラスの Text が描画処理を行っています。
Text クラスの textField プロパティを再設定すれば日本語も使えるようになります。

textField プロパティは Flash の TextField そのものです。
TextFormat インスタンスを textField.defaultTextFormat へ設定することで日本語入力も含めたあらゆるカスタマイズが可能になります。
デバイスフォントを指定する場合は textField.embedFonts = false; も忘れずに。

初期状態の設定は Style クラスで行われています。

Style.as

package com.bit101.components
{
	public class Style
	{
		public static var BACKGROUND:uint = 0xCCCCCC;
		public static var BUTTON_FACE:uint = 0xFFFFFF;
		public static var INPUT_TEXT:uint = 0x333333;
		public static var LABEL_TEXT:uint = 0x666666;
		public static var DROPSHADOW:uint = 0x000000;
		public static var PANEL:uint = 0xF3F3F3;
		public static var PROGRESS_BAR:uint = 0xFFFFFF;
 
		public static var embedFonts:Boolean = true;
		public static var fontName:String = "PF Ronda Seven";
		public static var fontSize:Number = 8;
	}
}

良くできたminimalcompsですが唯一の不満がTextArea作成時にできる周囲のボーダーと入力部分にできるインナーシャドーをインスタンスから再設定ができない点。
これは Panel クラスが描画処理をしています。
Text クラスで protected var _panel:Panel; と protected 変数とされており、残念ながら現時点では GETTER / SETTERも 設定されていません。
public ならば Panel クラスの各プロパティ shadow, color, gridSize, showGrid, gridColor でどうにかできるのに…

Panel 改造が必要な場合は TextArea を継承したクラスを作るしか解決方法がありません。

minimalcompsのダウンロードはGoogle codeから
minimalcomps

コメントを残す

必須欄は * がついています


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください