2010-04-08 12 views
24

मैं एंड्रॉइड के लिए एक गेम पर काम कर रहा हूं। इसे लागू करने में सहायता के लिए, मेरा विचार एक दृश्य का उप-वर्ग बनाना है। इसके बाद मैं मुख्य दृश्य के बच्चों के रूप में इस कक्षा के कई उदाहरणों को सम्मिलित करूंगा। प्रत्येक उदाहरण दबाए जाने पर इसका पता लगाएगा (ऑन टच लिस्टनर के माध्यम से)।एंड्रॉइड व्यू के सभी सबव्यूज़ के माध्यम से लूप?

अब मेरी समस्या यह है कि मैं इन सभी उप-विचारों के माध्यम से कैसे लूप करूं ताकि मैं उनकी स्थिति पढ़ सकूं और उन्हें संसाधित कर सकूं? (यानी जब वे सभी एक निश्चित राज्य तक पहुंचते हैं तो कुछ होना चाहिए)।

या स्क्रीन पर कई ऑब्जेक्ट्स रखने का एक बेहतर तरीका है जो स्पर्श का जवाब देते हैं और किसकी स्थिति मैं जांच सकता हूं?

उत्तर

17

@jqpubliq सही है की एक अच्छा विचार देना चाहिए लेकिन आप बस ViewGroup से getChildCount() और getChildAt() तरीकों का उपयोग कर सकते हैं यदि आप वास्तव में सभी दृश्य के माध्यम से जाना चाहते हैं। एक सरल पुनरावर्ती विधि बाकी करेगी।

public void recursiveLoopChildren(ViewGroup parent) { 
     for (int i = 0; i < parent.getChildCount(); i++) { 
      final View child = parent.getChildAt(i); 
      if (child instanceof ViewGroup) { 
       recursiveLoopChildren((ViewGroup) child); 
       // DO SOMETHING WITH VIEWGROUP, AFTER CHILDREN HAS BEEN LOOPED 
      } else { 
       if (child != null) { 
        // DO SOMETHING WITH VIEW 
       } 
      } 
     } 
    } 

समारोह की (पहले आइटम के लिए पिछले से) एक viewgroup अंदर अल दृश्य तत्वों पाशन शुरू कर देंगे, यदि एक बच्चा एक viewgroup है फिर पुन: प्रारंभ:

1

Views का उपयोग करना लगता है जैसे आंदोलन होने पर कुछ भी अच्छी तरह से प्रस्तुत करना मुश्किल हो जाएगा। आप शायद Canvas पर ड्राइंग करना चाहते हैं या OpenGL का उपयोग करना चाहते हैं जब तक कि आप वास्तव में कुछ स्थिर नहीं कर रहे हों। Android गेम बनाने पर पिछले वर्षों I/O सम्मेलन से great talk यहां दिया गया है। इसकी तरह लंबी और आप लगभग 15 मिनट में छोड़ सकते हैं। स्रोत भी उपलब्ध है। यही कारण है कि आप उन तरीकों चीजों के बारे में जाने के लिए

+0

हाँ, मुझे इसे एक अलग तरीके से करने की ज़रूरत है, लेकिन मैं इसे पहले कोशिश करने जा रहा हूं। यह एक अनौपचारिक खेल है। – Slapout

41

मैं एक पुनरावर्ती समारोह का एक छोटा सा उदाहरण बना दिया है उस बच्चे के साथ उस बच्चे के अंदर सभी घोंसला वाले विचारों को पुनः प्राप्त करने के लिए कार्य करें।

+0

काम नहीं करता है। जब दृश्य में वेब व्यू – Karacago

+2

कोई विशेष कारण है जिसे आपने चुना है (int i = parent.getChildCount() - 1; i> = 0; i -) 'के बजाय' (int i = 0; i

+0

@ पीटरप्रोकॉप मैं व्यक्तिगत रूप से इस लूप को अधिक पसंद करता हूं। यह लूप के दौरान, लूप के तत्व में से एक को हटा देता है, भले ही यह अच्छी तरह से काम करता है। –

0

इन विचारों का ट्रैक रखने के लिए केवल सरणी या वेक्टर का उपयोग क्यों न करें? यह मुझे लगता है कि सबसे सरल और सबसे कुशल तरीका होगा।

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