基于Java spring + vue3 + nuxt构建的内容管理系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

63 lines
1.8 KiB

import PresetPlayer, { Plugin, Events } from 'xgplayer';
import { IPluginOptions } from 'xgplayer/es/plugin/plugin';
// payTipPlugin.js
export default class payTip extends Plugin {
private readonly arriveTime: (() => void) | undefined;
private readonly clickButton: (() => void) | undefined;
private readonly lookTime: number;
private readonly tip: string;
// 插件的名称,将作为插件实例的唯一key值
static get pluginName() {
return 'payTip';
}
static get defaultConfig() {
return {
lookTime: 60,
tip: '此为付费视频, 支持后继续观看?'
};
}
constructor(args: IPluginOptions | undefined) {
super(args);
this.lookTime = args?.config.lookTime;
this.tip = args?.config.tip;
this.arriveTime = args?.config.arriveTime;
this.clickButton = args?.config.clickButton;
}
beforePlayerInit() {
// TODO 播放器调用start初始化播放源之前的逻辑
}
afterPlayerInit() {
// TODO 播放器调用start初始化播放源之后的逻辑
}
afterCreate() {
// 对当前插件根节点内部类名为.icon的元素绑定click事件
this.bind('.el-button', 'click', this.clickButton);
this.on(Events.TIME_UPDATE, (player: PresetPlayer) => {
if (+player.currentTime >= +this.lookTime) {
if (this.arriveTime && typeof this.arriveTime) {
this.arriveTime();
}
}
});
(this.find('.tip-text') as HTMLSpanElement).innerHTML = this.tip;
}
destroy() {
this.unbind('.el-button', 'click', this.clickButton);
}
render() {
return `<div id="pay-tip-plugin" class="pay-tip-plugin">
<span class="tip-text"></span>
<button type="button" class="el-button el-button--primary el-button--small">支 付</button>
</div>`;
}
}