2012-09-25 13 views
7

क्या किसी को पता है कि कीबोर्ड से टाइप किए गए प्रत्येक पत्र के लिए ध्वनि को चलाने के लिए कोई पूर्वनिर्धारित तरीका है या नहीं?जब कोई कुंजी दबाया जाता है तो ध्वनि चलाएं

उदाहरण के लिए: यदि मैं वाई टाइप करता हूं तो टेक्स्ट फ़ील्ड में, वेबसाइट वाई और इसी तरह कहती है।

या, इसे करने का सबसे अच्छा तरीका क्या होगा?

उत्तर

1

आपके पास सभी अक्षरों के लिए ध्वनि फ़ाइलें होनी चाहिए और उन्हें जावास्क्रिप्ट के साथ बटन प्रेस ईवेंट पर कॉल करना होगा।

+1

धन्यवाद .. मान लीजिए मुझे सबकुछ कोड करना है .. अब सभी अक्षरों की ध्वनि फ़ाइलों को क्रिया के लिए समय समाप्त करना .. धन्यवाद साथी :) –

+0

इस के लिए कोड पर कोई भाग्य? – mariovass

+0

हाय, क्या आप इसे सही ढंग से कार्यान्वित करने में सक्षम थे। आपने ऑडियो प्ले विलंबता कैसे प्रबंधित की? कृपया –

19

ध्वनि बजाना आसान है, और हैंडलर को मुख्य प्रेस में जोड़ना आसान है, लेकिन दो परिचालनों को जोड़ने के लिए कोई पूर्वनिर्धारित तरीका नहीं है, इसलिए आपको अपना कोड टाइप करना होगा।

<audio id=alarm> 
    <source src=sound/zbluejay.wav> 
</audio> 

और

document.getElementById('alarm').play(); 
के साथ इसे निष्पादित करें:

1) कुंजी दबाएँ

document.onkeydown = function() { 
    ... 

2) खेलने ध्वनि

एक ऑडियो तत्व जोड़ें पर कार्रवाई

उदाहरण के लिए आप एक नक्शे के निर्माण keycodes जोड़ने तत्व आईडी ध्वनि करने के लिए कर सकते हैं:

var sounds = { 
    88 : 'alarm', // key 'x' 
    ... 

}; 
document.onkeydown = function(e) { 
    var soundId = sounds[e.keyCode]; 
    if (soundId) document.getElementById(soundId).play(); 
    else console.log("key not mapped : code is", e.keyCode); 
} 

Yoy keycodes here

+0

साझा करें मैंने कोशिश की लेकिन स्पष्ट रूप से विधि "play" ऑडियो टैग में मौजूद नहीं है। मुझे निम्न त्रुटि मिलती है: "ऑब्जेक्ट [ऑब्जेक्ट ऑब्जेक्ट] में कोई विधि नहीं है 'play'" कोई विचार? –

+0

आपका ऑब्जेक्ट तब ऑडियो तत्व नहीं है। –

+0

हां, मुझे एहसास हुआ कि ऑडियो ऑब्जेक्ट तक पहुंचने के लिए मुझे एक और स्तर तक पहुंचना पड़ा। धन्यवाद। –

1

मिल सकता है मैं सिर्फ तुम्हारे लिए केवल HTML करने के लिए नीचे एक त्वरित स्क्रिप्ट काम को सरल लिखा था।

(function(){ 
 
\t var keyElements \t = document.getElementsByTagName('keysound'), 
 
\t \t i \t \t \t = keyElements.length, 
 
\t \t keys \t \t = {}; 
 
\t while (i--){ 
 
\t \t var cur \t \t = (keyElements[i].getAttribute('keys')||"").toString().split(''), 
 
\t \t \t v \t \t = cur.length, 
 
\t \t \t audio \t = keyElements[i].getAttribute('src'), 
 
\t \t \t caseinsensitive \t = keyElements[i].getAttribute('anycase')!==null?true:false, 
 
\t \t \t regexp \t = keyElements[i].getAttribute('regexp')!==null?true:false; 
 
\t \t if (audio){ 
 
\t \t \t while (v--){ 
 
     cur[v] = caseinsensitive ? cur[v] : cur[v].toLowerCase(); 
 
     
 
\t \t \t \t var src=!regexp?audio: 
 
\t \t \t \t audio.replace('${key}', cur[v]) 
 
\t \t \t \t .replace('${code}', cur[v].charCodeAt(0)); 
 
\t \t \t \t var ele = document.createElement('audio'); 
 
\t \t \t \t ele.src = src; 
 
\t \t \t \t document.body.appendChild(ele); 
 
\t \t \t \t (keys[cur[v]] = keys[cur[v]] || []).push(
 
\t \t \t \t \t ele 
 
\t \t \t \t); 
 
\t \t \t \t if (caseinsensitive) { 
 
      
 
\t \t \t \t \t (keys[cur[v].toUpperCase()] = keys[cur[v].toUpperCase()] || []).push(
 
\t \t \t \t \t \t ele 
 
\t \t \t \t \t); 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t } 
 
\t } 
 
    console.log(keys); 
 
\t window.addEventListener('keydown',function(evt){ 
 
\t \t var clist \t = keys[evt.key] || [], 
 
\t \t \t clen \t = clist.length; 
 
\t \t while (clen--){ 
 
\t \t \t try { clist[clen].play() } catch(e) {} 
 
\t \t } 
 
\t }); 
 
})();
<!-- Demo code example --> 
 
<keysound keys="abcdefghijklmnopqrstuvwxyz" regexp anycase src="https://the-peppester.github.io/styff/keys/${key}.mp3" /> 
 
<keysound keys="QWERTY" src="http://soundbible.com/mp3/Fart-Common-Everyday-Fart_Mike-Koenig.mp3" /> 
 
<keysound anycase keys="bnm,./;'[]-=+_()*&^%$#@!`~" src="http://soundbible.com/mp3/Iguana_Farts_In_A_Bathtub-Iguana_Farts-1423164123.mp3" /> 
 
<keysound anycase keys="asdfgh" src="http://soundbible.com/mp3/Uuuuuu-Paula-1357936016.mp3" />

प्रलेखन

स्क्रिप्ट ऊपर keysound तत्व करने के लिए विशेष अर्थ देता है आप खेलने के लिए अनुमति देने के लिए लगता है जब कोई उपयोगकर्ता एक कुंजी पर नीचे धक्का। थीस विशेष विशेषताएं हैं।

  • anycase
    • कुंजी मामले insenstive
  • keys=...
    • कुंजी है कि इस ध्वनि खेलेंगे बनाता
  • regexp
    • यह बनाता है ताकि प्रत्येक कुंजी के URL को इस तरह एक regexp की तरह ढंग से अलग हो सकता है:
    • URL में ${key} कुंजी चयनित प्रत्येक का सादा पाठ प्रतिनिधित्व द्वारा प्रतिस्थापित हो जाएगी
    • ${code} में यूआरएल प्रत्येक का आधार 10 ASCII कुंजी कोड प्रतिनिधित्व कुंजी का चयन द्वारा प्रतिस्थापित हो जाएगी
  • src=...
    • निर्धारित करता है ऑडियो फ़ाइल का यूआरएल। regexp से प्रभावित होता है विशेषता

इन के उदाहरण के लिए के बारे में डेमो देखें।

+0

डेमो चलाएं और अपने कीबोर्ड पर यादृच्छिक कुंजी दबाकर देखें, यह वाकई मजेदार है! –