[小ネタ] カスタムコマンドの作り方

あとで公式サイトのドキュメントとしてキチンとまとめますが、とりあえず走り書きしつつ紹介してみようかと思います。

まず、クラスのプロジェクトを書き出してください。
すると、templates フォルダの中に MyCommand.as というクラスファイルがあります。
これがカスタムコマンドを作る際のベースとなるクラスです。

_execute() メソッド
コマンドが実行された際に処理したい内容です。
正しく処理が完了したら executeComplete() メソッドを実行することでコマンド処理が完了したと見做されます。
executeComplete() メソッドは、コマンド実行中であれば _execute() メソッドの外でも実行できるので、非同期処理を含めたい場合には完了を意味するリスナー関数内で実行していただいても問題ありません。
また、処理中に問題が発生して中断処理を実行させたい場合には interrupt() メソッドを実行してください。

_interrupt() メソッド
コマンド実行中に中断処理が行われた際に処理したい内容です。
正しく中断処理が完了したら interruptComplete() メソッドを実行することでコマンド中断処理が完了したと見做されます。
また、中断処理中に問題が解決された場合には、executeComplete() メソッドを実行することで通常フローに戻すことも可能です。

それぞれのメソッドはコンストラクタでスーパークラスを初期化する際に登録する必要があるので、private な関数を登録することで処理内容を完全に隠蔽することが可能です。
また、コンストラクタに任意の引数を追加した場合には、clone() メソッド側も修正する必要がある点を気をつけてください。

コメントをどうぞ