2016-02-05 20 views
1

我最近一直在學習/使用JavaScript,並可以讓它工作正常。但是,我似乎無法在同一時間播放2個按鈕。JavaScript可以同時用於兩個按鈕嗎?

例如, [按鈕1] [BUTTON2]

,其中每個具有編程到其上的不同的聲音。你可以擊中每一個並獲得一個聲音,但是當你同時擊中時,你聽不到任何聲音。

有兩種方法可以讓你在擊中它們時發揮它們的聲音嗎?

感謝

...

我的代碼,如果相關:

<button id="Eb3btn"></button> 
    <button id="Fbtn"></button> 

    <script src="<?php bloginfo('stylesheet_directory'); ?>/javascript/howler.js/howler.min.js"></script> 
    <script> 
     var Eb3 = new Howl({urls: ["<?php bloginfo('stylesheet_directory'); ?>/sounds/Eb3.mp3"]}) 
     document.getElementById('Eb3btn').onclick=function(){Eb3.play()}; 

     var F3 = new Howl({urls: ["<?php bloginfo('stylesheet_directory'); ?>/sounds/F3.mp3"]}) 
     document.getElementById('Fbtn').onclick=function(){F3.play()}; 
    </script> 
+0

爲什麼以及如何一次點擊2個按鈕? – colecmc

+0

我試圖製作一個javascript鋼琴 – Snow

+0

如果是你正在做的鋼琴,那麼你可能是通過按下鍵盤上的按鍵來「點擊」它,而不是點擊鼠標? 如果是這樣,您可能需要使用[EventListeners](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)來監聽按鍵。 – userx01

回答

1

JavaScript的一個執行線程內運行,所以你將永遠無法讓他們真正點擊100 % 與此同時。

你可以去讓他們被點擊在一起最接近的是:

var btnEb3 = document.getElementById('Eb3btn'), 
    btnF = document.getElementById('Fbtn'); 

btnEb3.click(); 
btnF.click(); 

有關JavaScript線程的一些詳細信息:Why doesn't JavaScript support multithreading?

所以,把我的這段與您的示例可能類似於:

<script> 
var Eb3 = new Howl({urls: ["<?php bloginfo('stylesheet_directory'); ?>/sounds/Eb3.mp3"]}) 
document.getElementById('Eb3btn').onclick=function(){Eb3.play()}; 

var F3 = new Howl({urls: ["<?php bloginfo('stylesheet_directory'); ?>/sounds/F3.mp3"]}) 
document.getElementById('Fbtn').onclick=function(){F3.play()}; 

// have Eb3 and F play together: 
document.getElementById('Eb3btn').click(); 
document.getElementById('Fbtn').click(); 
</script> 
+0

這太糟糕了。任何建議我下一步要嘗試的是讓多個按鈕同時播放嗎? (如在鋼琴中) – Snow

+0

網絡工作者可能需要研究:https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers –

+0

他的代碼段應該適合您。 'click'方法模擬點擊。那麼btnEb3會先播放然後btnF – colecmc

相關問題