pc-pcm-wave 一个简单录音波纹 Preact 组件
pc-pcm-wave
一个简单的 pcm
波纹效果, 适用于 preact
项目, hooks
编写, 有如下特性
- 可自定义状态数量
- 可自定义线的数量、粗细、颜色、波速、振幅、延迟等参数
Live Demo
Props
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
stateMap | StateMap | 默认参数 | |
className | string | 根元素className | |
transitionDuration | number | 500 | 状态变换时长 |
Props Type: StateMap
键名 | 键值 | 描述 |
---|---|---|
[string] | State | 状态配置 |
Props Type: State
键名 | 键值 | 描述 |
---|---|---|
a | number | 振幅 |
ws | number | 波速 |
p | number | 频率 |
width | number | 线宽度 |
color | string | 线颜色 |
delay | number | 延迟单位秒 |
VM Public Methods
方法 | 参数 | 描述 |
---|---|---|
setState | stateName(string) | 切换到stateMap的键值所对应的配置 |
Demo Code
const line1Def = { p: 0.7, width: 1.3, color: 'rgba(255,255,255,1)', delay: 0, } const line2Def = { p: 0.7, width: 1, color: 'rgba(255,255,255,0.5)', delay: 0.45, } const stateMap = { idle: [ { a: 0, ws: 0, ...line1Def }, { a: 0, ws: 0, ...line2Def }, ], noise: [ { a: 4, ws: 9, ...line1Def }, { a: 3, ws: 9, ...line2Def }, ], voice: [ { a: 9, ws: 11, ...line1Def }, { a: 7, ws: 11, ...line2Def }, ], } function Page() { const waveRef = useRef() const onClick = () => { // 建议参考Demo的代码 waveRef.current && waveRef.current.setState(Math.random() > 0.5 ? 'noise' : 'voice') } return <div onClick={onClick}> <PCMWave ref={waveRef} stateMap={stateMap} /> </div> }
TODO
- 增加更多效果
License
MIT 造轮子锻炼抽象能力
「其他文章」
- GitHub 毕业年鉴「GitHub 热点速览 v.22.20」
- GitHub 上九个适合做外包项目的后台管理系统
- GitHub 毕业年鉴「GitHub 热点速览 v.22.20」
- 5 秒克隆声音「GitHub 热点速览 v.21.34」
- 前端食堂技术周刊第 37 期:Google I/O 2022、TS4.7 RC、WinterCG、Lerna 复活、GitHub 项目精选、State of C
- 工程师如何对待开源---一个老工程师的肺腑之言
- Autograd解析|OneFlow学习笔记
- gitHub的readme页的卡片和提交活动图的制作方法
- 你应该知道的 7 个 GitHub 功能
- 让你直呼「卧槽」的 GitHub 项目!
- 根因分析思路与方法看这一篇就够了!
- Hugging Face创始人亲述:一个GitHub史上增长最快的AI项目
- 版本控制神器GitHub的基本使用与踩坑,教你一铲子填平!
- 兼容PyTorch,25倍性能加速,OneFlow“超速”了
- 谁说 Zadig 只能复制环境?数百微服务一套环境实现高效协作
- 基于 Agora SDK 实现 iOS 端的多人视频互动
- 最近 火火火 的开源项目
- 一个程序的自我修养「GitHub 热点速览 v.22.19」
- TiDB 6.0 新特性解读 | Collation 规则
- 盘点 10 个 yyds 的区块链项目