
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)であることが必須です。

