diff --git a/CHANGELOG_CN.md b/CHANGELOG_CN.md index f5a09e7ce..356c73a42 100644 --- a/CHANGELOG_CN.md +++ b/CHANGELOG_CN.md @@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - 设置面板支持 range 和 onRange 选项 - 添加 isAndroid 和 isiOS 工具函数 - 弹幕库添加 mount 选项,可自定义发送器的挂载位置 +- 弹幕库添加 lockTime 选项,可自定义输入框的锁定时间 ## [4.4.0] - 2022-05-15 diff --git a/docs/assets/example/danmuku.js b/docs/assets/example/danmuku.js index 5c14fef48..59a8fc513 100644 --- a/docs/assets/example/danmuku.js +++ b/docs/assets/example/danmuku.js @@ -21,6 +21,9 @@ var art = new Artplayer({ useWorker: true, // 是否使用 web worker synchronousPlayback: false, // 是否同步到播放速度 filter: (danmu) => danmu.text.length < 50, // 弹幕过滤函数 + lockTime: 5, // 弹幕输入框的锁定时间,单位秒,范围在[0 ~ 60] + // 自定义弹幕输入框的挂载位置,默认挂载在播放器控制栏中间 + // mount: document.querySelector('.your-danmu-input'), }), ], }); diff --git a/docs/danmuku.html b/docs/danmuku.html new file mode 100644 index 000000000..f8097b828 --- /dev/null +++ b/docs/danmuku.html @@ -0,0 +1,62 @@ + + + + + + Artplayer.js + + + + + + + + + + +
+
+

+
+ + + + + + + + + \ No newline at end of file diff --git a/packages/artplayer-plugin-danmuku/src/danmuku.js b/packages/artplayer-plugin-danmuku/src/danmuku.js index 10d88c386..a65a7a398 100644 --- a/packages/artplayer-plugin-danmuku/src/danmuku.js +++ b/packages/artplayer-plugin-danmuku/src/danmuku.js @@ -56,6 +56,7 @@ export default class Danmuku { antiOverlap: true, useWorker: true, synchronousPlayback: false, + lockTime: 5, }; } @@ -72,6 +73,7 @@ export default class Danmuku { antiOverlap: 'boolean', useWorker: 'boolean', synchronousPlayback: 'boolean', + lockTime: 'number', }; } @@ -256,6 +258,7 @@ export default class Danmuku { this.option.speed = clamp(this.option.speed, 1, 10); this.option.opacity = clamp(this.option.opacity, 0, 1); + this.option.lockTime = clamp(this.option.lockTime, 0, 60); if (option.fontSize) { this.option.fontSize = this.getFontSize(this.option.fontSize); diff --git a/packages/artplayer-plugin-danmuku/src/setting.js b/packages/artplayer-plugin-danmuku/src/setting.js index 35c34d70d..368794c42 100644 --- a/packages/artplayer-plugin-danmuku/src/setting.js +++ b/packages/artplayer-plugin-danmuku/src/setting.js @@ -26,7 +26,7 @@ export default function setting(art, danmuku) { const $danmuOff = getIcon(danmuOff, 'danmu-off'); const $danmuConfig = getIcon(danmuConfig, 'danmu-config'); const $danmuStyle = getIcon(danmuStyle, 'danmu-config'); - const $control = danmuku.option.mount || $controlsCenter; + const $control = danmuku.option.mount instanceof Element ? danmuku.option.mount : $controlsCenter; function addEmitter() { const colors = [ @@ -113,7 +113,7 @@ export default function setting(art, danmuku) { $input.value = ''; danmuku.emit(danmu); addClass($send, 'art-disabled'); - countdown(danmuku.option.timeout || 5); + countdown(danmuku.option.lockTime); art.emit('artplayerPluginDanmuku:emit', danmu); } @@ -145,6 +145,12 @@ export default function setting(art, danmuku) { art.on('resize', () => { setStyle($emitter, 'display', $control.clientWidth < 150 ? 'none' : null); }); + + art.on('destroy', () => { + if ($control !== $controlsCenter) { + $control.removeChild($emitter); + } + }); } function addControl() {