javascript - 如何使用 Javascript 根据图片的位置选择和播放声音文件?
问题描述
我正在使用 HTML 和 Javascript 进行拖放活动;将图片拖到目标上。
在我的示例中,我有两张图片,“马”和“牛”,以及一个目标。我有两个声音文件,“Neigh”和“Moo”。
如果我将“Horse”拖到我想要“Neigh”播放的目标上。如果我将“Cow”拖到我想要“Moo”播放的目标上。播放应该由按钮点击触发。
我有拖放代码,但无法播放声音。
编辑:我知道如何播放声音文件;我不知道如何根据关联图片的位置播放特定文件。代码如下: 播放按钮的功能只是播放给定的声音文件,它在任何意义上都是不可控制的。这是我需要改变的。
谢谢你的帮助 :-)
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
/* this is the DROP function*/
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
/* plays the snippets when they are clicked clicked*/
function playAudio(url) {
new Audio(url).play();
}
/*Funcn for play button */
function play_music() {
document.getElementById("music1").play();
}
#empties {
width: 410px;
height: 700px;
margin-left: 10px;
margin-top: 0px;
position: absolute;
top: 10px;
left: 0px;
border: 1px solid blue;
}
.box001 {
width: 410px;
height: 41px;
margin: 0px;
padding: 0px;
border: 1px solid blue;
}
/* snippets */
#music {
width: 410px;
height: 700px;
margin-left: 00px;
margin-top: 0px;
position: absolute;
top: 10px;
left: 450px;
border: 1px solid red;
}
.box002 {
width: 410px;
height: 41px;
margin: 0px;
padding: 0px;
border: 1px solid red;
}
/* play button */
#my_button {
margin-left: 00px;
margin-top: 0px;
/*padding:10px;*/
/*border:1px solid black;*/
position: absolute;
top: 10px;
left: 880px;
border: 1px solid red;
}
<!-- music is dropped into these empty boxes -->
<div id="empties">
<div class="box001" ondrop="drop(event)" ondragover="allowDrop(event)" id="place001"></div>
</div>
<!-- these are the snippets to be dragged and dropped -->
<div id="music">
<div class="box002" ondrop="drop(event)" ondragover="allowDrop(event)">
<img onclick="playAudio('neigh.mp3')" ondragstart="drag(event)" draggable="true" id="target001" src="horse.JPG" alt="" border="0" />
</div>
<div class="box002" ondrop="drop(event)" ondragover="allowDrop(event)">
<img onclick="playAudio('moo.mp3')" ondragstart="drag(event)" draggable="true" id="target002" src="cow.JPG" alt="" border="0" />
</div>
</div>
<!-- Audio for button-->
<audio id="music1" src="neigh.mp3" preload="auto"></audio>
<!-- Button -->
<div id="my_button">
<button onclick="play_music()" ;>Play</button>
</div>
解决方案
推荐阅读
- node.js - 由于发生内部服务器错误,无法显示该页面。Node.js 天蓝色
- docker - 来自主机的容器内的 Cron 任务
- sql-server - 由于 tr_MStran_droptable 而删除表的问题
- hyperledger-fabric - Hyperledger Fabric 是否支持兼容 Bip32 的 HSM?
- css - 设置材质 UI 选择/下拉宽度
- angular - Angular:星云日历:如何用自定义文本替换年份和月份部分?
- javascript - 如何访问子组件的子组件中的道具
- ios - 如何在 SwiftUI 中添加自定义导航栏后退按钮
- typescript - 单元测试一个打字稿控制器,用passportJS实现社交登录
- excel - 结果数据不在所选日期内