任意の引数を持つ初期処理メソッドを共通的に実行したい
やりたかったことを思いついたのでメモします。wonderflで実験したら成功しました。
引数の異なる初期処理メソッドを共通的に呼び出すコード - wonderfl build flash online
僕がしたかったことは、ゲームのシーンを表すSceneクラスをSceneManagerクラスへ予め登録しておくことで、シーンを初期処理→画面遷移効果→ローディング→シーン処理実行→画面遷移効果→終了処理という一定の処理を行わせるということです。こういうことをさせる場合、Sceneクラスには例えば初期処理の場合、
public function initialize(context:Object):void { }
といった空メソッドを定義し、タイトルシーンの実装ということでSceneクラスを継承したTitleSceneを定義、initializeメソッドを以下のようにオーバーライドします。
override public function initialize(context:Object):void {
// 初期処理
}
contextとは、シーン毎に必要なデータや処理を選択的に取得、実行させることが出来るようにするための自分ルールで、シーン単位で作成する「I~Context」というインターフェイス型で渡ってきます。これがObject型だといちいちインターフェイス型にキャストしないといけません。これが煩わしく感じていて、回避策を探してました。
解決法を日本語で言うと、「"initialize"という名前のメソッドを引数を1つ与えて実行する。"initialize"メソッドが定義されていなければ何もしない。」ということです。詳しくはwonderflのコードを覗いてみてください。
このパターン、多用してしまいそうだなぁ。
2010/11/09追加
成功していませんでした。→【修正】任意の引数を持つ初期処理メソッドを共通的に実行したい