AS2から入ったせいか、SpriteやMovieClip以外のビルトインクラスの継承はあんまりやらないイメージがあるんですが、じかにTextFieldとかArrayとかも継承して使うとすっきり便利なときがあります。

下記はEnterキーイベントを拾って、入力内容をイベント送信してくれるクラスです。イベントも継承してカスタムイベントを作っています。

コンストラクタでデザイン設定してますが、TextFieldとして扱えるのでこれは生成する処理に任せてもいいでしょう。

以下コードです。

package { import flash.events.*; import flash.text.*; import flash.ui.Keyboard; public class InputTextArea extends TextField { public function InputTextArea() { border = true; borderColor = 0xCCCCCC; width = 300; height = 30; type = TextFieldType.INPUT; defaultTextFormat = new TextFormat( "AXIS Std R", 18, 0, true ); addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); } private function keyDownHandler(event:KeyboardEvent):void { if ( event.keyCode == Keyboard.ENTER ) { var inputText:String = text; text = ""; dispatchEvent( new InputEvent( InputEvent.INPUT_ENTER, inputText ) ); } } } }

package { import flash.events.Event; public class InputEvent extends Event { public static const INPUT_ENTER:String = "InputEvent.inputEnter"; private var _text:String = ""; public function InputEvent(type:String, text:String, bubbles:Boolean=false, cancelable:Boolean=false) { super(type, bubbles, cancelable); _text = text; } public override function clone():Event { return new InputEvent(type, _text, bubbles, cancelable); } public override function toString():String { return formatToString("InputEvent", "text", "type", "bubbles", "cancelable", "eventPhase"); } public function get text():String { return _text; } } }

Flexのmx.controls.videoClasses.VideoPlayerのようにVideoクラスを継承して、内部でNetStreamの処理を隠蔽したりするクラスもあります。

他にもよくあるボタン処理、たとえばmouseEnabledをoverrideしてステータスに応じた見た目を変えたりできますね。

HTML5飯