現時点では非常に面倒/反復的なクラスがあります:
public class AvFramework extends Object
{
// vars
private var _handler:AvHandler;
private var _keyboard:AvKeyboard;
private var _manager:AvManager;
/**
* Constructor
*/
public function AvFramework()
{
_handler = new AvHandler();
_keyboard = new AvKeyboard();
_manager = new AvManager();
// attach
_handler.framework = this;
_keyboard.framework = this;
_manager.framework = this;
}
/**
* Getters
*/
public function get keyboard():AvKeyboard{ return _keyboard; }
public function get manager():AvManager{ return _manager; }
}
このクラスは、ますます多くのクラスを使用する必要があるだけであり、上記のように 3 つの巨大なリストを作成する必要はありません。
上記を動的に行う方法はありますか?おそらくgetDefinitonByName()
、文字列のループで使用して、作成したいクラスを表します。
また、プロパティを読み取り専用にして、 経由でアクセスできるようにしたいと考えていますframework.myDynamicVarHere
。
私はこれらの線に沿って何かを考えています:
- インスタンスを作成したいクラスのリストを作成し、それらにアクセスする変数名とペアにします。
dynamic
変数を設定できるようにクラスを作成する必要がありますthis["var"] = new Blah();
私の考えがどこに向かっているかの簡単な抜粋:
var required:Object =
{
keyboard: "avian.framework.background.AvKeyboard",
manager: "avian.framework.background.AvManager",
handler: "avian.framework.background.AvHandler"
};
var i:String;
for(i in required)
{
var Req:Class = Class(getDefinitionByName(required[i]));
this[i] = new Req();
AvFrameworkObject(this[i]).framework = this;
}
これらを読み取り専用にする方法がわかりません。