私のHTMLページには、ダイヤル番号用の9つの画像と、押された番号を示す1つのテキストボックスがあります。これらの各画像をクリックすると、すぐにビープ音が鳴ります。非表示のプロパティでembedを使用し、そのソースを.wavサウンドに移動しようとしました。
正常に動作していますが、すぐに画像を次々と押すと、音が出ず、最後に一回だけハチになります。
'onclick'メソッドで.wavサウンドを再生するより速い方法はありますか?
私のHTMLページには、ダイヤル番号用の9つの画像と、押された番号を示す1つのテキストボックスがあります。これらの各画像をクリックすると、すぐにビープ音が鳴ります。非表示のプロパティでembedを使用し、そのソースを.wavサウンドに移動しようとしました。
正常に動作していますが、すぐに画像を次々と押すと、音が出ず、最後に一回だけハチになります。
'onclick'メソッドで.wavサウンドを再生するより速い方法はありますか?
最近のブラウザのみをサポートする必要がある場合は、HTML5がAudio
オブジェクトを提供します
サウンドをロード/バッファリングするには:
var snd = new Audio("file.wav");
サウンドを再生するには:
snd.play();
それを最初に再キューするために(あなたがそれを再びプレイできるように):
snd.currentTime=0;
@klaustopher(https://stackoverflow.com/users/767272/klaustopher )によるこの回答https://stackoverflow.com/a/7620930/1459653は私を助けました。彼が書きました:
HTML5には、
<audio>
サウンドの再生に使用できる新しい-Tagがあります。非常にシンプルなJavaScriptインターフェースもあります。
<audio id="sound1" src="yoursound.mp3" preload="auto"></audio> <button onclick="document.getElementById('sound1').play();">Play it</button>
Font Awesomeアイコン「fa-volume-up」(Webページの「mule。」の後にあります)をクリックすると「donkey2.mp3」のサウンドが再生されるように、彼のアドバイスを実装した方法は次のとおりです(注:mp3は再生されません)すべてのブラウザで)。
<p>In short, you're treated like a whole person, instead of a rented mule. <audio id="sound1" src="assets/donkey2.mp3" preload="auto"></audio><a class="icon fa-volume-up" onclick="document.getElementById('sound1').play();"></a>
サウンドの再生にはembed要素を使用できますが、さまざまなブラウザでサポートされている形式を確認する必要があります。
<a onclick="playSound('1.mp3')">
<img src="1.gif">
</a>
<div id="sound"></div>
<script>
var playSound = function (soundFile) {
$("#sound").html("<embed src=\"" + soundFile + "\" hidden=\"true\" autostart=\"true\" />");
}
</script>
このコードを使用すると、画像ボタンを配置できます。クリックすると音が鳴ります。GoogleChromeとMicrosoftEdgeで動作しますが、InternetExplorerで動作させることができません。私はhtml5コードを使用しています。コピーして貼り付け、独自のサンプルを追加してください。
</head>
<body>
<script>
var audio = new Audio("/Sample.wav ");
audio.oncanplaythrough = function ( ) { }
audio.onended = function ( ) { }
</script> <input type="image" src="file://C:/Sample.jpg" onclick="audio.play ( )">
</body>
</html>
コードの詳細については、 http://html5doctor.com/html5-audio-the-state-of-play/をご覧ください。
受け入れられた回答(Chrome 70でテスト済み)に基づく例ですが、再キューする必要はありませんでした:
<button onclick="snd.play()"> Click Me </button>
<script>
var snd = new Audio("/Content/mysound.wav");
</script>
これは、効果音を再生するために私が行うことです。
<html>
<body>
<audio id="sfx"><source src="mysound.mp3"></audio>
<button onclick="playsound()" id="button">Play a sound!</button>
<script> function playsound() {
var sfx = document.getElementById("sfx");
sfx.autoplay = 'true';
sfx.load();}
または、次のスニペットを実行できます。
function playsound() {
var mysound = document.getElementById("mysound");
mysound.autoplay = 'true';
mysound.load();
}
button {
color: blue;
border-radius: 24px;
border: 5px solid red;
}
body {
background-color: #bfbfbf;
}
<html>
<body>
<audio id='mysound'><source src="click.mp3"><!-- "click.mp3" isn't a sound effect uploaded to the snippet, because I don't think you can upload sfx to snippets. (I'm new to stackoverflow, so there might be a way) But if you actually use a sound effect in that folder that you're using, it works. --></audio>
<button id='btn' onclick='playsound()'>Play a sound!</button>
</body>
</html>