2011-09-02 17 views
5

के अंदर इंस्टेंस नामों के साथ समस्या मैंने फ्लैश में एक बटन बनाया है, और उसके अंदर मेरे पास टेक्स्टफ़िल्ल्ड और मूवीक्लिप है, उदाहरण के नाम दोनों के साथ। वे बिना किसी कीफ्रेम के बटन के सभी 4 फ्रेम को कवर करते हैं।बटन

मैंने पाया मैं उदाहरण के नाम मैं सेट हैं, उसका उपयोग वस्तुओं का उपयोग नहीं कर सकता है, तो मैं कोड के इस टुकड़े के लिए इस्तेमाल किया क्या हो रहा है देखने के लिए:

var obj:DisplayObject = this.m_graphics.btnChange.upState; 
for (var i:int = 0; i < obj.numChildren; i++) 
{ 
    trace("We have an object at " + i + " - " + obj.getChildAt(i) + ": " + obj.getChildAt(i).name); 
    var t:TextField = obj.getChildAt(i) as TextField; 
    if (t == null) 
     continue; 

    trace(" The textfield has text '" + t.text + "'); 
} 

मैं आउटपुट के रूप में यह मिलता है:

We have an object at 0 - [object Shape]: instance195 
We have an object at 1 - [object TextField]: instance199 
    The textfield has text 'Change' 
We have an object at 2 - [object MovieClip]: instance203 

तो वे टेक्स्टफिल्ड और मूवीक्लिप हैं, वे अभी भी उनके इंस्टेंस नाम जेनेरिक "इंस्टेंस ###" पर रीसेट कर चुके हैं।

कोई भी जानता है कि समस्या क्या है? यदि मैं बटन को मूवीक्लिप बना देता हूं, तो यह ठीक काम करता है (हालांकि मुझे फ्रेम को स्वयं नियंत्रित करना है)।

मैं विभिन्न तरीकों मैं इस के आसपास काम करने के लिए इस्तेमाल कर सकते हैं के बारे में पता कर रहा हूँ, लेकिन यह बहुत कुछ बदल रहा है इसका मतलब है, और मुझे पता करना चाहते हैं क्यों SimpleButton के उदाहरण के नाम में फ्लैश

सेट पर ध्यान न दें संपादित करें

थोड़ा आगे इसे में देख रहे हैं, यह है कि भले ही वहाँ फ्लैश IDE में बटन में कोई मुख्य-फ़्रेम, फ्लैश प्रत्येक आइटम (उदाहरण मेरे साथ एक TextField दे देंगे के लिए upState के माध्यम से पता लगाने के 4 उदाहरणों बनाता है लगता है उदाहरण नाम "instance2", जबकि downState में, उदाहरण का नाम "instance4" है)। अगर मैं एक राज्य में पाठ बदलता हूं, तो यह दूसरों में प्रतिबिंबित नहीं होता है।

मैं सोच रहा हूँ कि जब Flash ऑब्जेक्ट बनाता है, यह ठीक से सभी गुण की प्रतिलिपि नहीं है (अर्थात् उदाहरण के नाम)

संपादित

मैं मानता हूँ कि शेन की जवाब एक समाधान नहीं है - मैं मैंने खुद को यह कहा कि मुझे समस्या के आसपास होने के विभिन्न तरीकों के बारे में पता है - लेकिन यह समस्या को अनदेखा करता है, यह इसे हल नहीं करता है (यही कारण है कि मैंने इसे स्वीकार नहीं किया है)। मैं पहली बार एसओ में आया यह देखने के लिए कि क्या कोई शायद जानता है कि यह पहली जगह क्यों हो रहा है (टीबीएच, यह एसडीके में एक बग जैसा लगता है)।

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

मैं उस समय के लिए बक्षीस खुला रखूंगा। अगर मुझे कुछ और नहीं मिलता है, तो मैं इसे शेन को दूंगा। http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/SimpleButton.html

मूल रूप से, सरल बटन उनकी परिभाषा सरल से कर रहे हैं:

+1

शनीघाट बिल्कुल सही है, आप बटन के अंदर वस्तुओं तक नहीं पहुंच सकते हैं। – hardik

+0

@ हार्डिक आप बटन के अंदर ऑब्जेक्ट्स तक पहुंच सकते हैं, मैं इसे उपरोक्त कोड में करता हूं। यदि यह I * का कोई मामला नहीं है, तो यह एक अलग कहानी है – divillysausages

+0

ठीक है, अगर आप अपने राज्य पर बटन के साथ कुछ एनिमेट प्रभाव करना चाहते हैं तो बटन के अंदर मूवीक्लिप बनाने का प्रयास करें। यूपी पर अलग मूवीक्लिप नीचे। – hardik

उत्तर

5

इसका कारण यह है flash.display.SimpleButton वर्ग DisplayObjectContainer से विरासत नहीं है, और राज्य कंटेनर भी DisplayObjectContainers नहीं हैं।यदि आप आंतरिक वस्तुओं पर अधिक जटिल नियंत्रण चाहते हैं तो आपको स्प्रेड या मूवीक्लिप का उपयोग बटन मोड के साथ सही पर सेट करना होगा।

+1

'सरलबटन 'खुद' डिस्प्ले ऑब्जेक्ट्स 'या' डिस्प्ले ऑब्जेक्ट कंटेंसर 'नहीं हैं, लेकिन उनके ऊपर, ऊपर, नीचे और हिट स्टेटस हैं, इस तरह आप पहली जगह – divillysausages

+2

सरल बटन _is_ डिस्प्ले ऑब्जेक्ट में ऑब्जेक्ट्स को कैसे खोजते हैं। यह विरासत सरल बटन है -> इंटरएक्टिव ऑब्जेक्ट -> डिस्प्ले ऑब्जेक्ट -> इवेंट डिस्पैचर -> ऑब्जेक्ट। – shanethehat

+0

क्षमा करें, मुझे स्पष्टीकरण देने का मतलब था कि मैं सरल बटन स्टेटस (अपस्टेट, डाउनस्टेट, आदि) के अंदर ऑब्जेक्ट्स को खोज रहा हूं। वे मौजूद हैं, उनके पास उनके इंस्टेंस नाम सेट नहीं हैं – divillysausages