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頂級有用的開源項目排行榜
- typora GitHub PicGo 圖牀寶馬級教學
- 盤點最近 yyds 的開源項目
- 活動開啟|論道原生:圍爐 Github,夜話開源項目
- GitHub Codespaces 初體驗
- 也為 Gitee 聲援下(一個七年老用户的心聲)
- Fizz企業級微服務API網關進階系列教程-服務編排處理列表數據(上)-展開與合併
- FlyFish2.0版本後端源碼學習筆記
- 語音轉寫可實時,直播也能同步字幕
- Github全封41萬俄羅斯開發者賬號,開源真的無國界
- 手把手推導Back Propagation
- 助你成為 CSS 大師的18個 GitHub 倉庫
- 譯|你應該知道的 7 個 GitHub 功能
- 盤點 6 個開源的音樂播放器!
- 你還不會在GitHub上分享項目嗎?來看看這篇git使用吧!(一)
- 4.4 萬 Star!GitHub 和 Twitter 都在用的 CSS 庫
- 用 Go 快速開發一個 RESTful API 服務
- GitHub 畢業年鑑「GitHub 熱點速覽 v.22.20」
- GitHub 畢業年鑑「GitHub 熱點速覽 v.22.20」
- GitHub 上九個適合做外包項目的後台管理系統