我有一個類這在目前是相當混亂/重複:創建多個只讀屬性動態地在AS3
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
訪問。
我沿着這些路線思考的東西:
- 我創造我想要創建的情況下,與他們應當由被訪問的變量名稱配對的類的列表。
- 我需要通過
this["var"] = new Blah();
的快速片段使課堂dynamic
,這樣我可以設置增值經銷商那裏我的想法會:
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;
}
只是不知道如何我將能夠使這些只讀。
不錯的問題! – Eugeny89 2011-06-03 10:08:53
this:'var i:String; for(i in required)'是沒有必要的。用'for(var i:String in required)',你只需要初始化字符串一次,字符串在for循環之後仍然存在。額外的產品線唯一得到您的是...另外一條線。 – cwallenpoole 2011-06-03 11:19:41
@cwallenpoole的確,這只是對我更好。 @ Eugeny89謝謝:) – Marty 2011-06-04 04:07:45