2008年02月27日
Flash | CS3のTextInput、TextAreaコンポーネント
TextArea - ActionScript 3.0 コンポーネントリファレンスガイド
Flash CS3のテキスト入力コンポーネントへの入力を監視してゴニョゴニョやろうと、textInputイベントをlistenしてたんだけど、このイベントオブジェクトのpreventDefault()メソッドを呼んでも何も起こらない。そのまま入力できてしまう。
長時間いろいろ試した挙げ句に最終的にソースを読んでみると、コンポーネントの内部でTextFieldからのtextInputイベントを一度キャッチして、イベントオブジェクトを作り直して再送出していた。このイベントオブジェクトのcancelableプロパティはfalseになっていた。
あれ? cancelableプロパティはtrueってドキュメントに書いてあったじゃんと思って再度見てみると、
cancelable:と書いてあった。確かにウソは書かれていないのだけど。。。ここではfalseに固定されてるんだから、trueの場合のことなんて書くなよ。
true は、preventDefault() メソッドを呼び出して、デフォルトの動作をキャンセルします。
幸いなことにtextInputイベントを再送出している箇所のメソッドがprivateではなかったので、これらのコンポーネントクラスを継承した自前テキスト入力コンポーネントを作って解決。
Comment