2011-01-19 22 views
7

पर लगता बजाना 2 एक साथ किसी भी लैपटॉप के लिए एक खेल डिजाइनिंग:एक ही समय

2 खेलना चाहते हैं एक ही समय में लग रहा है! एक बटन पर दबाते समय पृष्ठभूमि संगीत और ध्वनि!

System.Media का उपयोग करके मुझे 2 ध्वनियां एक साथ खेलने की अनुमति नहीं दी जाएगी। पृष्ठभूमि संगीत के लिए, मैं निम्नलिखित प्रयोग किया है:

SoundPlayer sp = new SoundPlayer(@"..\..\bin\debug\tribal dance.wav"); 
sp.Play; 

अगर मैं एक और SoundPlayer खेला जाता है, पिछले एक बंद हो जाता है!

मैं पृष्ठभूमि संगीत को तब तक खेलना चाहता हूं जब तक फॉर्म बंद न हो जाए! और साथ ही, यदि एक बटन क्लिक किया जाता है, तो संगीत के साथ एक और आवाज बजाई जाएगी!

मैंने टूलबार में विंडोज मीडिया प्लेयर को भी जोड़ने का प्रयास किया और इसका इस्तेमाल किया (मुझे एक ही समय में 2 प्ले 2 ध्वनि की इजाजत देता है)। यह ठीक काम करता है लेकिन अगर मैं इसे (@""..\..\bin\debug\tribal dance.wav"); डालता हूं तो पथ एक त्रुटि देगा और मुझे किसी भी कंप्यूटर द्वारा इसे पढ़ने के लिए इसे इस तरह से रखना होगा।

कोई सुझाव?

+0

[wav फ़ाइल async कई बार .NET के साथ प्ले करें] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/4429513/play-wav-file-async-multiple-times-with-net) –

+1

यह नहीं है आपके प्रश्न का सीधा जवाब है, लेकिन मैं अत्यधिक आपके गेम में ध्वनि के लिए एफएमओडी का उपयोग करने की सलाह देता हूं। गेम के लिए उपयोग करना और डिजाइन करना बहुत आसान है। – JimDaniel

उत्तर

6

आप एक बार SoundPlayer का उपयोग करने में दो ध्वनियों नहीं सकता उपयोग कर सकते हैं निरपेक्ष पथ की जरूरत है।

ध्वनिप्लेयर उस कार्य को पूरा करने के लिए देशी WINAPI PlaySound फ़ंक्शन का उपयोग कर रहा है, जिसमें एक साथ ध्वनि सुनने के लिए कोई समर्थन नहीं है। SoundPlayer के कई उदाहरण बनाना मदद नहीं करेगा।

कई विकल्प हैं जिनमें से अधिकांश खिड़की के मूल ऑडियो करने के लिए निम्न स्तर एपीआई का एक बहुत लागू करने शामिल library या DirectSound (ध्यान दें न सी # कर रहे हैं और इंटरॉप कोड की बहुत आवश्यकता होती है)

निर्भर करने के लिए सबसे आसान विकल्प होगा रहे हैं आपके लिए ऑडियो चलाने के लिए विंडोज मीडिया प्लेयर पर।

कोई संदर्भ जोड़ें "C: \ Windows \ System32 \ wmp.dll" करने के लिए

तो का उपयोग

var player = new WMPLib.WindowsMediaPlayer(); 
player.URL = @"..\..\bin\debug\tribal dance.wav"; 

नोट: खेलने यूआरएल संपत्ति

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

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