本文正在参加「 . 」
前言
前几天在朋友圈看到“敲电子木鱼”的视频,敲一下木鱼就提示“功德 +1”,还带有敲击声和念经的声音,感觉挺有意思的。
心血来潮,捣鼓了一晚上,借助码上AdminJS
实现了这个功能。
展示效果
素材
准备素材如下:
-
木鱼:网上找了一张木鱼的图片,用PS简单处理成黑白的图片。
-
敲木鱼音频、念经音频:网上找了素材,简单剪辑了一下。
素材存放在服务器上,方便码上AdminJS
中引入。
代码块
首先,思考一下展示效果。我们点击木鱼,响起"咚"的一声,次数+1。同时,我们可以在木鱼的右上角添加"功德%20+1"的文字闪现效果。
点击木鱼,我们需要做的事情有:
- 播放敲木鱼的声音
- 计数+1
- 添加交互效果(提示文字、木鱼动画等)
其中,计数很容易实现,就不赘述了。
在Vue3中,借助%20audio%20标签引入音频文件,调用.play()
方法可以播放音频:
<audio%20controls%20ref="audio"%20class="aud">
%20%20<source%20src="https://clemmensen.top/static/muyu.mp3"%20/>
</audio>
<script%20setup>
const%20audio%20=%20ref(null)
function%20playMuyu()%20{
%20%20audio.value.play()
}
</script>
提示文字的实现是,当敲击木鱼时,给文字加上tipsActive
的类名,该类名带有动画效果,文字会向上移动并消失。
@keyframes%20textMove%20{
%20%20from%20{
%20%20%20%20top:%2020%;
%20%20%20%20opacity:%201;
%20%20}
%20%20to%20{
%20%20%20%20top:%2018%;
%20%20%20%20opacity:%200;
%20%20}
}
具体代码:
<div%20:class="['tips',%20{%20'tips-active':%20tipsActive%20}]">
%20%20{{tips}}
</div>
<script%20setup>
const%20tips%20=%20ref('功德%20+1')
function%20clickMuyu()%20{
%20%20count.value%20++%20//%20计数+1
%20%20tipsActive.value%20=%20true
%20%20setTimeout(()%20=>%20{
%20%20%20%20tipsActive.value%20=%20false
%20%20},%20time.value)
}
</script>
相似的,给木鱼加上敲击效果,也就是点击会有缩放效果:
@keyframes%20muyuScale%20{
%20%200%%20{
%20%20%20%20transform:%20scale(1);
%20%20}
%20%2050%%20{
%20%20%20%20transform:%20scale(0.95);
%20%20}
%20%20100%%20{
%20%20%20%20transform:%20scale(1);
%20%20}
}
拓展
开始界面
刚开始是直接显示一个木鱼图片,这里我们考虑添加一个自定义的开始界面,包括“Start”按钮和上方的诗词“睡到僧廊响木鱼,庄周蝴蝶两蘧蘧。”。在点击按钮后才进入木鱼图片,并开始播放背景音乐。
背景音乐
点击"Start"时,开始播放背景音乐。背景音乐的播放方法和上面提到的播放音频的方法一致,这里就不赘述了。
提供多种提示文字
右边加上了文字选择功能,可以选择功能、抗疫或Bug,对应的提示文字会跟着改变。