我有一堂课,目前非常混乱/重复:
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;
}
只是不确定如何将这些设置为只读。