TextFieldのイベントを調べる

キーボード関連

 TextFieldのプロパティをだいたい調べ終わったので、今度はイベントを調べてみる。
 関係ありそうなのはTextEventか。

 あーEventにもあるね。ばらけてんなぁ。
 だいたい定数とか、定数使うメソッドやプロパティのあるオブジェクトで定義した方が良いとおもうんだよ。複数のオブジェクトにまたがる定数ってインタフェースで定義すりゃいいんじゃないの?良く判らんけど。

var aIns:AObj = new AObj();
aIns.prop = BObj.const;

 みたいにAObjとBObjって二つのオブジェクト使うんじゃなくて、

var aIns:AObj = new AObj();
aIns.prop = AObj.const;

 AObjだけで良くない?という話。
 無い物ねだりしてもしょうがないので、次へ。

Event.CHANGEとTextEvent.TEXT_INPUT

 名前考えるの面倒なので、TextFieldは今後_txtというインスタンス名を使っていく。

TextField.change(Event.CHANGE)は、コントロールの値が変更された後に実行されます。ということだ。
似たのでTextField.textInput(TextEvent.TEXT_INPUT) 具体的にいつだ?
どうもtextInputは変更前、changeは変更後。それから、ユーザの変更でしか発生しない。スクリプトから_txt.text = "change"とかやっても無反応。_txt.type = TextFieldType.INPUTでないといけないという訳だ。
 textInputにはユーザの入力文字のtextプロパティがあるけどchangeにはない。
文字の削除はchangeが発生するがtextInputは発生しない。
changeはEventオブジェクトに定数が、textInputはTextEventに定数が定義されてる。
似てるようで色々違う。もう少し合わせてくれ。紛らわしい。

_txt.addEventListener( TextEvent.TEXT_INPUT, textInputHandler);
function textInputHandler( e:Event ):void {
	trace("TEXT_INPUT : e.target.text : ", e.target.text);
}
_txt.addEventListener( Event.CHANGE, changeHandler);
function changeHandler( e:Event ):void {
	trace("CHANGE : e.target.text : ", e.target.text);
}

TextEvent.LINK

 TextField.link(TextEvent.LINK)は、HTML が有効になっているテキストフィールドで、URL が "event:" で始まるハイパーリンクをユーザーがクリックしたときに実行されます。 ということで。普通のhttp:のリンクでは発生しない。
帰ってくるeventオブジェクトでLINK特有なのはtext。event:の後ろの文字列が入っている。

_txt.htmlText = "<a href='event:イベント発生'>クリック</a>"; 

_txt.addEventListener( TextEvent.LINK, linkHandler );
function linkHandler( e:TextEvent ):void {
	trace("e.text : ", e.text);
}

Event.SCROLL

 TextField.scroll(Event.SCROLL)ユーザーがスクロールを行ったときに TextField オブジェクトによって送出されます。という話だ。
 一応テストしてみる。eventから、どっちの方向にスクロールしたとか、どのくらいスクロールしたかとかは分からないようだ。

_txt.addEventListener( Event.SCROLL, scrollHandler );
function scrollHandler( e:Event ):void {
	trace("e.target.scrollV : ", e.target.scrollV );
}

 意外に手間取った。

 今日はここまで。


2008-04-12