मैं एक पोंग/ईंट-ब्रेकर गेम में एक अजीब समस्या में भाग गया हूं जो मैं बना रहा हूं: खिलाड़ी की विशेष क्षमताओं में से एक दूसरी गेंद को मुख्य गेंद से अलग करना है और ठीक उसी तरह कार्य करना है जैसे मुख्य एक शॉर्ट के लिए करता है गायब होने से पहले की अवधि। परेशानी यह है कि जब दूसरी गेंद एक स्टेज बाउंड्री के संपर्क में आती है और माना जाता है कि वह अपने x या y वेग (सीमा हिट के आधार पर) को उलट देती है, तो यह किसी अजीब कारण से इसकी चौड़ाई और ऊंचाई के गुणों को भी स्पष्ट रूप से बढ़ा देती है। ग्राफिक नहीं बदलता है, लेकिन चौड़ाई और ऊंचाई के मान (काफी) करते हैं और इसका परिणाम कुछ अटके हुए हैंडलर विधियों में होता है जिन्हें मैंने विषम स्थिति के लिए परिभाषित किया है जहां एक गेंद आंशिक रूप से ऑफस्टेज को बार-बार बुलाया जा रहा है। कोड में कहीं भी मैं चौड़ाई, ऊंचाई, या स्केलएक्स/स्केलवाई गुण नहीं बदलता, इसलिए मुझे नहीं पता कि ऐसा क्यों हो रहा है। Adobe दस्तावेज़ पढ़ने में मुझे इस मामले के बारे में संभावित रुचि के लिए निम्नलिखित दो बिंदु मिले--

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

  2. चौड़ाई/ऊंचाई गुण: पिक्सल में डिस्प्ले ऑब्जेक्ट की चौड़ाई/ऊंचाई इंगित करता है। चौड़ाई/ऊंचाई की गणना डिस्प्ले ऑब्जेक्ट की सामग्री की सीमाओं के आधार पर की जाती है। जब आप चौड़ाई/ऊंचाई गुण सेट करते हैं, तो स्केलएक्स/स्केलवाई संपत्ति तदनुसार समायोजित की जाती है। --- 'प्रदर्शन वस्तु की सामग्री' से उनका वास्तव में क्या मतलब है? क्या यह सिर्फ ग्राफिक है या कुछ परिस्थितियों में कुछ और हो सकता है? क्या किसी कारण से वेग उलटने के बाद सामग्री बदल सकती है? डिबगिंग प्रिंट स्टेटमेंट के माध्यम से, मैंने पाया कि उस बिंदु पर जहां चौड़ाई और ऊंचाई स्केलएक्स का विस्तार करती है और स्केलवाई गुण 1 पर रहते हैं, यह दर्शाता है कि फ्लैश ऑब्जेक्ट के आकार को प्रभावी ढंग से 'जानता' नहीं है ...

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

ffLog.txt बॉल2.txt

0
jeff 20 मार्च 2011, 11:30

1 उत्तर

सबसे बढ़िया उत्तर

आपकी बॉल 2 कक्षा से:

...
callParts = new CallParts((this.x + (this.width/2)),50);
addChild(callParts);

आप गेंद में किसी आकार के बच्चे को जोड़ रहे हैं। कोई आश्चर्य नहीं कि इसका आकार बढ़ गया है। DisplayObject हमेशा अपने बच्चों और/या ग्राफिक आकृतियों को समाहित करने के लिए काफी बड़ा होता है। क्या आप सुनिश्चित हैं कि आपकी वस्तुएं ठीक से नेस्टेड हैं?

0
alxx 20 मार्च 2011, 16:40