返回
轻松实现架子鼓效果:用原生JS打造沉浸式音乐体验
前端
2023-12-22 08:13:30
原生JS实现架子鼓效果
1. 准备工作
在开始之前,你需要确保你的设备上安装了必要的软件。你将需要一个文本编辑器(如记事本或Sublime Text)和一个网络浏览器(如Chrome或Firefox)。此外,你还需要下载一个音频库,如Howler.js或SoundJS。
2. 创建HTML和CSS文件
首先,创建一个名为“index.html”的HTML文件和一个名为“style.css”的CSS文件。在“index.html”文件中,添加以下代码:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="drum-kit"></div>
<script src="script.js"></script>
</body>
</html>
在“style.css”文件中,添加以下代码:
#drum-kit {
width: 600px;
height: 400px;
border: 1px solid black;
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(3, 1fr);
}
.drum-pad {
width: 100px;
height: 100px;
border: 1px solid black;
background-color: white;
display: flex;
justify-content: center;
align-items: center;
font-size: 24px;
}
.drum-pad:active {
background-color: black;
color: white;
}
3. 创建JavaScript文件
接下来,创建一个名为“script.js”的JavaScript文件。在该文件中,添加以下代码:
// 导入Howler.js音频库
import Howler from "howler";
// 创建一个架子鼓实例
const drumKit = new DrumKit();
// 创建一个键盘监听器
document.addEventListener("keydown", (e) => {
// 获取按下的键
const key = e.key.toUpperCase();
// 播放对应的音效
drumKit.play(key);
});
// 创建一个鼠标点击监听器
document.addEventListener("click", (e) => {
// 获取点击的元素
const element = e.target;
// 如果点击的是架子鼓元素
if (element.classList.contains("drum-pad")) {
// 获取点击的元素的键值
const key = element.id.toUpperCase();
// 播放对应的音效
drumKit.play(key);
}
});
// 创建一个触摸屏触摸监听器
document.addEventListener("touchstart", (e) => {
// 获取触摸的元素
const element = e.target;
// 如果触摸的是架子鼓元素
if (element.classList.contains("drum-pad")) {
// 获取触摸的元素的键值
const key = element.id.toUpperCase();
// 播放对应的音效
drumKit.play(key);
}
});
// 架子鼓类
class DrumKit {
constructor() {
// 创建一个音效数组
this.sounds = [
new Howler({
src: ["sounds/kick.wav"],
}),
new Howler({
src: ["sounds/snare.wav"],
}),
new Howler({
src: ["sounds/hi-hat.wav"],
}),
new Howler({
src: ["sounds/tom-1.wav"],
}),
new Howler({
src: ["sounds/tom-2.wav"],
}),
new Howler({
src: ["sounds/tom-3.wav"],
}),
new Howler({
src: ["sounds/crash.wav"],
}),
new Howler({
src: ["sounds/ride.wav"],
}),
new Howler({
src: ["sounds/cowbell.wav"],
}),
];
// 创建一个架子鼓元素数组
this.drumPads = document.querySelectorAll(".drum-pad");
// 将架子鼓元素和音效关联起来
this.drumPads.forEach((drumPad, index) => {
drumPad.addEventListener("click", () => {
this.play(index);
});
});
}
// 播放对应的音效
play(key) {
this.sounds[key].play();
}
}
4. 运行程序
现在,你可以运行你的程序了。在终端中,导航到你的项目文件夹,然后运行以下命令:
npx http-server
这将启动一个本地服务器。在浏览器中,打开http://localhost:8080
。你应该会看到一个架子鼓界面。你可以使用键盘上的ASDFGHJKL这几个键或点击鼠标和触摸屏幕来演奏架子鼓。
总结
通过本文,你学会了如何使用原生JS创建一个具有九个鼓点的架子鼓界面。这个项目可以让你对JavaScript的事件处理和音频播放有一个更深入的了解。如果你对音乐或编程感兴趣,不妨尝试一下这个项目。