feb19.jp blog - life is creative!

AS2でTextFieldの行数を取得する

ブックマークに追加する tags:    

AS2でTextFieldの行数を取得する

AS2ではTextFieldの行数を取得するためのプロパティやメソッドはありません(AS3にはTextField.numLinesがあります)。

AS2でTextFieldの行数を取得するには、TextField.maxscrollを使えば、取得することはできるのですが、TextFieldの行間(TextFormat.leading)を操作してしまうと、TextField.maxscrollの値が変化してしまうので、想定する行数とは異なる値になってしまうことがあります。

具体的にはAS2でTextFieldの行間(leading)を「2」以外にすると、Textfield.maxscrollは表示されるテキストの行数とは異なる行数を返します。

FlashのTextFieldのデフォルトの行間が「2」のようで(たとえばFlashを起動したばかりの時に、TextFieldを「テキストツール」を使って作った時は、行間が自動的に「2」と指定されています)、これと違った値にすると、maxscrollの値が、行数とはリンクしていない値になってしまいます。

というわけで、AS2で行数を取得したい場合は、「TextFormat.leading = 2」とTextField.setTextFormat()で一旦行間をデフォルトの値に置き換えておいて、その間にTextField.maxscrollで行数を取得して、もとの行間に戻す、というようにする必要があるようです。

めんどくさいので、便利クラスを作ってみました。

TextFieldUtilities.as
 
class TextFieldUtilities
{
	public static function numLines(tf:TextField):Number
	{
		var fmt:TextFormat = tf.getTextFormat();
		var leading_fmt:TextFormat = new TextFormat();
		leading_fmt.leading = 2;
		tf.setTextFormat(leading_fmt);
		var num:Number = tf.maxscroll;
		tf.setTextFormat(fmt);
		return num;
	}
}

使い方は、「tf」というインスタンス名のTextFieldをステージ上に置いて、

tf.text = "うんこうんこうんこうんこうんこうんこ";
trace(TextFieldUtilities.numLines(tf));

とかやると、TextFieldに表示されているテキストの行数を調べることができます。

ちなみにテキストフィールドは、複数行(tf.multiline = true)であることが必須です。

2008年07月12日20:33

Webデザインブログ

「AS2でTextFieldの行数を取得する」の関連エントリー

 iTunes Store(Japan)

コメントを投稿

トラックバック

このエントリーのトラックバックURL:
http://feb19.jp/mt/mt-tb.cgi/149

Navigation

古:FlashPlayer 10 beta 2 が出てる
新:AS2で読み込んだ外部画像にスムージングを適用する
トップページ

Recently Entries
Flash 上でパブリッシュしたとき、型宣言されていない変数・関数があったら警告を出す
Flex SDK (mxmlc)や Flex Builder とかで...
Flash Builder 4 Standard 導入
色々メモリリークチェックとか出来る Premium は必要になってか...
Mac でファイルの関連付けを変える(Mac で AIR アプリがアップデート出来ないを解決する方法)
ファイルを右クリックして「情報を見る」を選び、表示されたウィンドウの...
Mac OS X 10.6 Snow Leopard から入ってるフォント「Menlo」がコーディング作業にいい感じ
Xcode でコード書いているとき、Eclipse でコード書くより...
AIR で JSON 形式ファイルの入出力
AIR 祭り開催中。今回はファイル入出力。AS3 で扱っている Ob...
Adobe CS5 ティザーサイトオープン
カウントダウンが始まっています。いよいよ CS5 ですね。globa...
AIR でファイルがドラッグアンドドロップされたことを NativeDragEvent で検知する
最近また AIR が楽しい気がして触っているのですが、 Google...
iPhone アプリ "iBeat - BPM Counter" を発売しました & iPhone インタラクションデザインについて
BPM 計測アプリです。既に似たようなアプリはいくつか発売されている...
AS3 の演算子 ||= について
AS3 だけでつかえるものではないのですが、AS3 での動作を確認し...
iPhone SDK 「カテゴリ」について+NSString の空白文字を除去する
Objective-C では、高位のフレームワークで、低位のフレーム...