2012-04-09 8 views
8

एक एचटीएमएल 5 गेम में मैं बना रहा हूं, जब चीजें टकराती हैं तो मैं एक "थड" ध्वनि बजाता हूं। हालांकि, यह थोड़ा अवास्तविक है। वस्तुओं की वेग से कोई फर्क नहीं पड़ता, वे हमेशा समान, अपेक्षाकृत जोर से "ठग" ध्वनि बनाते हैं। मैं जो करना चाहता हूं वह यह है कि ध्वनि की जोर वेग पर निर्भर करती है, लेकिन मैं यह कैसे कर सकता हूं? मुझे केवल एक आवाज बजाने के बारे में पता है।एचटीएमएल 5 ऑडियो की जोर कैसे सेट करें?

playSound = function(id) 
{ 
    sounds[id].play(); 
} 

soundsnew Audio("url") के से भरा एक सरणी है।

+0

संभव नकल http://stackoverflow.com/questions/1933969/sound-effects-in-javascript-html5 – coder

+0

यह, मैं नहीं है मानना। – corazza

उत्तर

16

ऑडियो तत्व की वॉल्यूम संपत्ति का उपयोग करें। W3 से:

The element's effective media volume is volume, interpreted relative to the range 0.0 to 1.0, with 0.0 being silent, and 1.0 being the loudest setting, values in between increasing in loudness. The range need not be linear. The loudest setting may be lower than the system's loudest possible setting; for example the user could have set a maximum volume.

पूर्व: sounds[id].volume=.5;

+0

'आवाज़ [id] .volume (खंड)' देता "Uncaught TypeError: एक समारोह है वस्तु # की संपत्ति 'मात्रा' नहीं" – corazza

+1

ओह, मेरी कोड में लेखन भूल। सही किया। – j08691

+0

अच्छा, यह अजीब लगता है। ;) यह काम करता है, धन्यवाद! – corazza

4

आप निर्धारित करके वॉल्यूम समायोजित कर सकते हैं:

setVolume = function(id,vol) { 
    sounds[id].volume = vol; // vol between 0 and 1 
} 

हालांकि, ध्यान भालू मात्रा के बीच एक छोटी सी देरी स्थापित किया जा रहा है कि वहाँ है, और यह प्रभाव ले रहा है। आप पिछले वॉल्यूम पर ध्वनि शुरू करने के लिए सुन सकते हैं, फिर नए पर जाएं।

+0

उत्तर के लिए धन्यवाद और टिप के लिए, +1! आम तौर पर विराम कितना बड़ा है? मेरी आवाज ज्यादातर <1 सेकंड लंबाई में है, क्या वह समस्याएं पेश करेगी? – corazza

3

आप लाभ के साथ भी खेल सकते हैं और मात्रा 100% से ज़ोर से खेल सकते हैं। आप ध्वनि बढ़ाना इस सुविधा का उपयोग कर सकते हैं:

function amplifyMedia(mediaElem, multiplier) { 
    var context = new (window.AudioContext || window.webkitAudioContext), 
     result = { 
     context: context, 
     source: context.createMediaElementSource(mediaElem), 
     gain: context.createGain(), 
     media: mediaElem, 
     amplify: function(multiplier) { result.gain.gain.value = multiplier; }, 
     getAmpLevel: function() { return result.gain.gain.value; } 
     }; 
    result.source.connect(result.gain); 
    result.gain.connect(context.destination); 
    result.amplify(multiplier); 
    return result; 
} 

आप कुछ इस तरह कर सकता है 100% करने के लिए प्रारंभिक प्रवर्धन स्थापित करने के लिए:

var amp = amplifyMedia(sounds[id], 1); 

तो अगर आप ध्वनि की जरूरत है दो बार के रूप जोर होने के लिए आप कुछ इस तरह कर सकता है:

:

amp.amplify(2); 

आप आधा करना चाहते हैं यह आप ऐसा कर सकते हैं

समारोह की एक पूरी ऊपर लिखने यहाँ पाया जाता है: http://cwestblog.com/2017/08/17/html5-getting-more-volume-from-the-web-audio-api/

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