2010-03-19 19 views
6

समाधान:actionscript addChild एक प्रदर्शन वस्तु पहले की आवश्यकता होती है

आप एक ही समस्या है, addElement() addChild() के बजाय क्या यह किया


मैं है mxml से actionctipt तक जाने की कोशिश कर रहा है। मेरे पास <s:Rect> है जिसे मैंने अपनी संपत्तियां बनाई हैं और सेट की हैं, लेकिन इसे जोड़ने में परेशानी है।

var aRect:Rect = new Rect(); 
//set properties like aRect.x, aRect.y, aRect.width, aRect.height 

//tried adding it various ways 
addChild(aRect); 
Application.addChild(aRect); 
Application.application.addChild(aRect); 
stage.addChild(aRect); 

लेकिन मैं त्रुटि 1067 बार आ रही है: एक असंबंधित प्रकार flash.display को रेक्ट: प्रकार spark.primitives के एक मूल्य के अंतर्निहित बलात्कार मूलतः MXML में DisplayObject

, यह था सही <s:Application> अंदर कुछ भी

<s:Application> 

    <s:Rect id="aRect" x="10" y="10" width="15%" height="15%"> 
     //then fill code here, removed for readability 
    </s:Rect> 

</s:Application> 

क्या सौदा है अंदर से नहीं लगाए गए, मैंने सोचा कि actionscript MXML से अच्छे होगा।

+0

फ्लेक्स 4 से पहले इस्तेमाल कभी नहीं, लेकिन मुझे इस बारे में उत्सुकता है। आशा है कि आपको जवाब मिलेगा। –

+0

क्या आपका कोड उदाहरण क्लास क्लास या किसी अन्य क्लास से है? – JanD

+0

@JanD, कोड मुख्य एमएक्सएमएल एप्लीकेशन में सही है (मेरे पास सिर्फ एक एमएक्सएमएल है, कोई घटक या कुछ भी नहीं), और निश्चित रूप से एक्शनस्क्रिप्ट कोड स्क्रिप्ट टैग में एक init() फ़ंक्शन में है और सृजन पर ट्रिगर हो जाता है, बिल्कुल सामान्य सामान। काफी कुछ है कि अब मैं इन दृश्य तत्वों को बनाने की कोशिश कर रहा हूं वें actioncript। – touB

उत्तर

1

ऐसा इसलिए है क्योंकि फ्लेक्स 4 ने एमएक्सएमएल-आधारित अनुप्रयोगों में प्रदर्शन पदानुक्रम के तरीके को महत्वपूर्ण रूप से बदल दिया है। यह थोड़ा उलझन में है क्योंकि addChild() अब उतना ही काम करता है जितना आप चाहते हैं - आपको डेटाप्रोवाइडर में तत्व जोड़ना होगा, और उसके बाद उन तत्वों को प्रदर्शित करने का तर्क (जिसे वे जोड़ना चाहते हैं, उन्हें त्वचा कैसे करें , आदि) कहीं और संभाला जाता है। हालांकि, यह एक उपयोगी परिवर्तन है, क्योंकि यह आपको अपनी चिंताओं को एक बहुत ही ठोस तरीके से अलग करने के लिए मजबूर करता है। एक बार जब आपके तत्व आपके डेटा में जोड़े जाते हैं, तो प्रदाता आप अपने एप्लिकेशन के तरीके को बदलने के लिए इच्छानुसार लेआउट ऑब्जेक्ट्स (यहां तक ​​कि रनटाइम पर) को स्वैप कर सकते हैं।

संपादित करें: तकनीकी रूप से यह डिस्प्ले नहीं है स्वयं ही बदल गया है। यह तथ्य है कि फ्लेक्स द्वारा उपयोग की जाने वाली मूल इकाई अब "समूह" है - यहां तक ​​कि: अनुप्रयोग समूह को बढ़ाता है। आप अपनी सामग्री को किसी समूह (या शीर्ष स्तर के एप्लिकेशन) में जोड़ते हैं और फिर आप समूह को एक लेआउट असाइन करते हैं ताकि यह बताने के लिए कि आपके द्वारा जोड़े गए आइटम को कैसे प्रदर्शित किया जाए।

+0

माइक क्या आप इसके बारे में ब्लॉग पोस्ट करने में रुचि रखते हैं और शायद इसे अपने उत्तर में जोड़ सकते हैं। "एक बार आपके तत्वों को आपके डेटा में जोड़े जाने के बाद, प्रदाता आप अपने एप्लिकेशन के तरीके को बदलने के लिए इच्छानुसार लेआउट ऑब्जेक्ट्स (यहां तक ​​कि रनटाइम पर) को स्वैप कर सकते हैं।" विशेष रूप से दिलचस्प है और शब्दों की तुलना में कोड के साथ शायद बेहतर समझ में आता है। धन्यवाद। – touB

+0

हा, मुझे लगता है कि किसी को शायद इसे लिखना चाहिए - मुझे पता है कि O'Reilly प्रेस से फ्लेक्स 4 कुकबुक इसे समझाने का वास्तव में अच्छा काम करता है। वह जल्द ही बाहर होना चाहिए। इस बीच में मैं एक अच्छे लेखन के लिए चारों ओर देखता हूं, मुझे यकीन है कि वहां कुछ है - अगर मुझे लगता है कि मैं इसे यहां पोस्ट करूंगा। – Myk

+0

यहां एक वीडियो ट्यूटोरियल समझाया गया है - http://flex4.org/2009/06/23/flex-4-layouts/ असल में, अधिकांश फ्लेक्स 4 विचार (एस: एप्लिकेशन सहित) में एक लेआउट प्रॉपर्टी है। यह निर्धारित करता है कि वस्तुओं को कैसे प्रदर्शित किया जाता है, और आप चार मूलभूत के अलावा अपने स्वयं के कस्टम लेआउट बना सकते हैं। वीडियो इसे बहुत अच्छी तरह से बताता है! – Myk

0

हां, आपको डिस्प्ले ऑब्जेक्ट की आवश्यकता है। मैं spark.primitives से परिचित नहीं हूँ। संदर्भ, लेकिन शायद आप आयत खींचने के लिए अपने ग्राफिक्स ऑब्जेक्ट पर एक नया स्प्राइट और कॉल विधियां बना सकते हैं?

0

लाइव दस्तावेज़ों के अनुसार, एप्लिकेशन क्लास की ऐड चाइल्ड विधि को इसे डिस्प्ले ऑब्जेक्ट होने की आवश्यकता होती है।

2

addChild(aRect); को addElement(aRect); में बदलने की कोशिश की और यह खूबसूरती से काम किया।

0

परेशान हम अक्सर addElement का उपयोग कर फ्लैश संपत्ति (एसएफएफ एससीसी) (प्रदर्शन वस्तुओं) जोड़ने के लिए संघर्ष करेंगे।

मैं इस अभी :(अधिक हुप्स करने के लिए एक रास्ते पर काम कर रहा हूँ और कूद

इसके अलावा मेरे SWC पैकेज एक्सप्लोरर में देखने योग्य नहीं है (क्यों नहीं?)

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