2009-03-23 20 views
5

मेरे पास एक ऑब्जेक्ट है जो डेटाबेस तालिका का प्रतिनिधित्व करता है। मैं इस ऑब्जेक्ट के माध्यम से पुनरावृत्ति करना चाहता हूं और प्रत्येक मान प्रिंटिंग प्रिंट करना चाहता हूं। ऐसा करने के लिए मैं क्या उपयोग कर सकता हूं?ऑब्जेक्ट मानों के माध्यम से फ्लेक्स 3 पुनरावृत्त

मैं प्रत्येक वस्तु के लिए नहीं actionscript

मेरी MXML अंदर ऐसा करना चाहते हैं का श्रेय मैं एक imput क्षेत्र बनाना चाहते हैं

उत्तर

11

फ्लेक्स 3 लूपिंग पर दस्तावेज़ देखें। यदि आप करते हैं, तो आप इस मिल जाएगा: एक वस्तु के गुणों के माध्यम से

for..in

for..in पाश दोहराता है, या एक सरणी के तत्वों। उदाहरण के लिए, आप एक सामान्य ऑब्जेक्ट के गुणों के माध्यम से पुनरावृति करने के लिए (वस्तु गुण किसी विशेष क्रम में नहीं रखा जाता है, तो गुण एक मालूम होता है यादृच्छिक क्रम में दिखाई दे सकते हैं) एक for..in पाश का उपयोग कर सकते हैं:

var myObj:Object = {x:20, y:30}; 
for (var i:String in myObj) 
{ 
    trace(i + ": " + myObj[i]); 
} 
// output: 
// x: 20 
// y: 30 

प्रत्येक ऑब्जेक्ट के लिए इनपुट फ़ील्ड बनाने की कोशिश करने के बजाय, मेरा सुझाव है कि आप DataGrid और कस्टम ItemEditors पर एक नज़र डालें।

+2

Kemenaran के रूप में, नीचे इशारा किया है, तो आप वर्ग गुण से अधिक पुनरावृति करना चाहते हैं, विहित समाधान से काम नहीं होता। अनुमोदित, अज्ञात वर्ग गुणों पर पुनरावृत्ति करना ज्यादातर डिबगिंग के दौरान उपयोगी होगा। – Sint

1

आप इसे actionscript की तरह लिखने लेकिन स्क्रिप्ट टैग के साथ MXML फ़ाइल के अंदर शामिल कर सकते हैं :

<mx:Script> 
    <![CDATA[ 
     public function LoopAndPrint() : void 
     { 
      //your code here 
     } 
    ]]> 
</mx:Script> 
2

"इन ... इन" के साथ समस्या यह है कि यह केवल गतिशील गुणों पर ही सक्रिय होती है। यही है, यदि आपकी वस्तु को कक्षा (और गतिशील रूप से नहीं) के रूप में परिभाषित किया गया है, तो "for..in" कुछ भी नहीं देगा।

ActionScript प्रलेखन() तय की संपत्तियों के लिए describeType उपयोग करने के लिए सुझाव देते हैं, लेकिन इसके जटिल इस सरल कार्य के लिए लग रहा है ...

4

मैं मानता हूँ कि इस उत्तर उपयोगी नहीं है। यह केवल जेनेरिक ऑब्जेक्ट्स के साथ काम करता है, उपयोगकर्ता ने ऑब्जेक्ट्स घोषित नहीं किया है।

हालांकि, यहां कुछ कोड है जो उपरोक्त सुझाव के अनुसार वर्णन प्रकार का उपयोग कर काम कर सकते हैं/कर सकते हैं। (और मुझे सच में नहीं लगता कि यह बहुत जटिल है)। ध्यान रखें कि केवल सार्वजनिक गुण/तरीकों, आदि संपर्क में हैं:

var ct:CustomObject = new CustomObject(); 
var xml:XML = describeType(ct); 
for each(var accessor in xml..accessor) { 
    var name:String = [email protected]; 
    var type.String = [email protected]; 
    trace(ct[name]); 
} 
+0

ध्यान दें कि इस उदाहरण में केवल * एक्सेसर्स * शामिल हैं - विशेषताओं को वास्तव में गेटर्स और सेटर्स का उपयोग करके परिभाषित किया जाता है। यदि कोई चर, स्थिरांक या विधियों में रूचि रखता है तो उसे थोड़ा संशोधित करने की आवश्यकता होगी। अधिक विशिष्ट जानकारी के लिए [वर्णन प्रकार का दस्तावेज़ीकरण] देखें (http: //help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/package.html#describeType \ (\))। –

संबंधित मुद्दे