में एक से अधिक केवल पढ़ने के लिए गुण बनाना मैं एक वर्ग जो इस समय काफी गंदा है/दोहराव है:गतिशील 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
के माध्यम से पहुंचा जा सके।
मैं कुछ सोच रहा हूँ इन पंक्तियों के साथ:
- मैं वर्गों मैं के उदाहरण, चर नाम वे से एक्सेस किया जाना चाहिए के साथ रखा बनाना चाहते हैं की एक सूची बना।
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; }
बस सुनिश्चित करें कि नहीं मैं कैसे सक्षम होगा:
- मैं कहाँ मेरे विचार जा रहे हैं के माध्यम से
this["var"] = new Blah();
के त्वरित टुकड़ा वर्ग dynamic
बनाने के लिए तो मैं वार्स सेट कर सकते हैं कि आवश्यकता होगी इन केवल पढ़ने के लिए।
अच्छा सवाल !!! – Eugeny89
यह: 'var i: स्ट्रिंग; (i आवश्यक में) 'आवश्यक नहीं है। 'के लिए (var i: आवश्यक में स्ट्रिंग) 'आप केवल स्ट्रिंग को एक बार प्रारंभ करते हैं और स्ट्रिंग लूप के बाद बनी रहती है। एकमात्र चीज जो अतिरिक्त लाइन आपको मिलती है ... एक अतिरिक्त रेखा है। – cwallenpoole
@cwallenpoole सच है, यह बस मुझे अच्छा लगता है। @ Eugeny89 धन्यवाद :) – Marty