2013-01-15 46 views
11

खेल रहा है, जबकि ध्वनि अभी भी चल रहा है, मुझे लूप को शुरू/बंद करने का एक तरीका चाहिए। मैंने पाया है कि एकाधिक ध्वनियों को एक साथ खेलने का सबसे अच्छा तरीका एक्सएनए का उपयोग करना है। तो मैंने अपने SoundEffect ऑब्जेक्ट से ऑडियो क्लिप युक्त SoundEffectInstance बनाया है। अब समस्या यह है कि मेरे पास एक बटन है जो इस क्लिप की स्थिति को "looped" से "non looping" और उपाध्यक्ष से बदलना चाहिए।विंडोज फोन 8 पर एक्सएनए के साथ ऑडियो लूपिंग जबकि ध्वनि अभी भी

यहां समस्या है: यह एक अपवाद फेंकता है कि लूप को पहले खेल से पहले सेट किया जाना चाहिए। तो मैंने सोचा कि, "नॉन लूपिंग" से "looped" में स्विच करते समय, मैं बस ध्वनि को रोकने के लिए इंतजार कर सकता था और फिर SoundEngineInstance को फिर से बनाना, IsLooped = true सेट करना और इसे फिर से शुरू करना चाहता हूं। यह एक काम करता है, लेकिन कुछ देरी हो रही है और इससे आपको अपना समय कम हो जाता है, इसलिए यह काफी बेकार है।

जो मैं खोज रहा हूं वह ध्वनि बजाने और बिना किसी देरी के लूप को सेट या अनसेट करने का एक तरीका है।

संपादित करें:

मैं दो SoundEngineInstance, एक लूप में चलाया और नहीं एक का उपयोग करने की कोशिश की, और बस उनके बीच स्विच मात्रा का उपयोग करते हुए। समस्या यह है कि गैर looped एक सिर्फ पहले खेल के बाद बंद हो जाता है, तो अगर मैं इसे दो बार लूप करता हूं और फिर मैं इसे गैर लूप स्थिति में डालता हूं, तो कोई आवाज नहीं खेला जाता है क्योंकि गैर लूप क्लिप पहले ही समाप्त हो जाती है!

सुझाव?

+0

चूंकि आप ध्वनि को लूप चाहते हैं, तो क्या आप कहेंगे कि यह एक गीत की तरह है और इतना नहीं 'ध्वनि प्रभाव'? – ChiefTwoPencils

+0

मुझे कुछ छोटे नमूने मिल गए हैं और मैं उन्हें लूप करना चाहता हूं। मैं 'SoundEffect' के बारे में बात कर रहा हूं क्योंकि यह एक्सएनए कक्षा है जिसे मैं प्लेबैक के लिए उपयोग करता हूं। – StepTNT

उत्तर

2

मेरे पास वही प्रॉपम था और मैंने इसे हल करने के लिए एक ही ऑडियो क्लिप के साथ दो उदाहरणों का उपयोग किया, एक लूपिंग और इसके बिना एक। मैंने दोनों को between स्विच किया। यह शायद सबसे अच्छा समाधान नहीं है लेकिन यह मेरे लिए काम करता है।

+0

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

0
http://msdn.microsoft.com/en-us/library/dd940203(v=xnagamestudio.31).aspx से

: एक ध्वनि खेलते हैं:

  1. विधि में कैसे ओर दिखाया गया है एक SoundEffect घोषित।

  2. ध्वनि ध्वनि प्रभाव घोषित करें, और इसे SoundEffect.CreateInstance के वापसी मूल्य पर सेट करें।

  3. सेट SoundEffectInstance.IsLooped सच है।

  4. कॉल SoundEffectInstance. लूपिंग ध्वनि चलाने के लिए प्ले करें।

यदि आप अब इसे लूप नहीं करना चाहते हैं, लेकिन केवल अंत तक खेलने के लिए आप शायद इस्लाओप्ड को झूठी सेट कर सकते हैं।

+0

प्रश्न ध्वनि को लूप करने के बारे में नहीं है, लेकिन यह अभी भी खेल रहा है, जबकि इसकी स्थिति बदल रहा है। इसका मतलब है 'SoundClip.Stop() 'या क्लिप समाप्त होने से पहले इसे लूप/अनलॉक करना। – StepTNT