入力されたキーで分岐して何か処理させたいとかそんな感じのコードを書きたい場合。swtich で分岐してもいいんだけど、配列使ってやると switch 使わずに書ける。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" applicationComplete="init()"> <mx:Script> <![CDATA[ private var methodTable:Object = new Object; private function init():void { methodTable["a"] = function():void {trace("a pressed");} methodTable["b"] = function():void {trace("b pressed");} methodTable["c"] = cPressed; } private function doKeyUp(event:KeyboardEvent):void { var charCode:String = String.fromCharCode(event.charCode) if (methodTable.hasOwnProperty(charCode)) { methodTable[charCode](event); } } private function cPressed(event:KeyboardEvent):void { trace("c pressed" + event); } ]]> </mx:Script> <mx:TextInput id="textInputA" keyUp="doKeyUp(event)" /> </mx:Application>
CODE COMPLETE 第2版 上 でテーブル駆動方式って名前で紹介されてるやりかたです。利点は if 文使わずに分岐構造を表現できることですな。AS は(Java に比べると)関数の扱い方が柔軟なんでこういうコード書きたい場合は柔軟で良いですなぁ。