2013-12-09 11 views
6

मुझे पता है कि पारंपरिक UIViews के लिए, मैं "उपयोगकर्ता इंटरैक्शन सक्षम करने" ध्वज को सेट करने के लिए सेट कर सकता हूं, और दृश्य अब स्पर्शों का जवाब नहीं देगा, उनके नीचे दिए गए विचार स्पर्श प्राप्त करेंगे।आईओएस 7 स्प्राइट किट इसे "टैप थ्रू" बनाने के लिए स्प्राइट पर स्पर्श को अक्षम कैसे करें?

क्या स्प्राइट किट में "टैप थ्रू" कार्यक्षमता को लागू करने का कोई तरीका है? अब तक मैंने केवल लोगों को "टच शुरू किया" का उपयोग करके देखा है, बिंदु प्राप्त कर रहा है और उस बिंदु पर नोड्स के लिए दृश्य पूछ रहा है।

इस दृष्टिकोण के साथ समस्या यह है - अगर मैं sprites (जैसे राक्षस जीवन बिंदु, आदि) के ऊपर ओवरले जोड़ना चाहता हूं तो वे स्पर्शों का भी जवाब देंगे। अब तक मैं अलग-अलग नोड्स के लिए कस्टम क्लास बनाकर इस समस्या से बचने की कोशिश कर रहा हूं, और फिर प्रत्येक नोड की कक्षा की जांच करते हुए, यदि कथन में बहुत बड़ा हो।

क्या स्प्राइट किट के लिए "टैप थ्रू" कार्यक्षमता प्राप्त करने का एक बेहतर तरीका है?

+0

क्या आप अभी 'node.userInteractionEnabled = NO;' सेट कर सकते हैं? – Evan

उत्तर

16

यदि आप userInteractionEnabled संपत्ति को उप-वर्गीकृत SKSpriteNode पर YES पर सेट करते हैं, तो स्पर्श प्रतिनिधियों को कक्षा के भीतर बुलाया जाएगा। इसलिए, आप अपनी कक्षा के भीतर स्प्राइट के स्पर्श को संभाल सकते हैं।

हालांकि, डिफ़ॉल्ट रूप से, userInteractionEnabled संपत्ति NO पर सेट है। इसलिए एक स्प्राइट पर स्पर्श डिफ़ॉल्ट रूप से एक "टैप थ्रू" होता है।

तो, ओवरले आप चाहते हैं, स्प्राइट के लिए कस्टम कक्षाएं बनाने के लिए, कि वर्ग के भीतर touchesBegan: और अन्य प्रतिनिधियों को लागू करने और जबकि initialising, YES करने के लिए userInteractionEnabled गुण सेट।

+0

मेरी इच्छा है कि मैं इसे कई बार बढ़ा सकता हूं, इससे मेरा जीवन इतना आसान हो गया है –

+0

@akashg - यहां एक ही समस्या है, और मुझे यकीन नहीं है कि यह कैसे हल हुआ। मेरे पास एक दृश्य (userInteractionEnabled = NO) है जिसमें कभी-कभी ओवरले (userInteractionEnabled = NO) के साथ एक कस्टम स्प्राइट होता है। कस्टम स्प्राइट नल को तब तक ठीक करता है जब तक कि ओवरले खत्म न हो जाए, और फिर वे कुछ भी नहीं सुनते। मैं नीचे की ओर बढ़ने के लिए ओवरले के माध्यम से टैप कैसे पास करूं? धन्यवाद! – wanderlust

+0

@ वान्डरलस्ट - यह नोड पेड़ पर निर्भर करता है। चूंकि ओवरलेज़ की userInteractionEnabled प्रॉपर्टी को सेट पर सेट किया गया है, तो टैप को ओवरलेज़ पेरेंट द्वारा अवरुद्ध कर दिया जाएगा, या तब तक नोड इंटरैक्टिव होने तक। यहां, मैं अनुमान लगा रहा हूं कि माता-पिता दृश्य है। आपको उस दृश्य के स्पर्श प्रतिनिधियों में कुछ कार्यक्षमता लागू करनी होगी जो स्पर्श बिंदु पर स्थित नोड के स्पर्श को 'हाथ से ऊपर' रखती है। – ZeMoon

6

स्प्राइट किट केवल हिट परीक्षण और ड्राइंग ऑर्डर निर्धारित करने के लिए zPosition मान का उपयोग करता है।

तो यदि आप उन्हें मारना नहीं चाहते हैं तो आप अपने सभी sprites 0 से अधिक डाल सकते हैं। और फिर एक साधारण तर्क परीक्षण zPostion> 0

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