赞
踩
本示例介绍如何使用@ohos.danmakuflamemaster和@ohos.gsyvideoplayer开发支持视频弹幕的播放器。可以自定义弹幕样式、占据屏幕宽度,发送弹幕,开关弹幕视图。
使用说明
videoInit: (iVideoPlayer: IVideoPlayer, xid: string) => void = (iVideoPlayer: IVideoPlayer, xid: string) => {
this.mIVideoPlayer = iVideoPlayer;
this.xComponentId = xid;
this.mIVideoPlayer.setUp(this.videoModel.getUrl(), this.videoModel.getCacheWithPlay());
}
danmuInit() { let maxLinesPair: Map<number, number> = new Map(); maxLinesPair.set(BaseDanmaku.TYPE_SCROLL_RL, 5); // 滚动弹幕最大显示5行 // 设置是否禁止重叠 let overlappingEnablePair: Map<number, boolean> = new Map(); ... this.mContext = DanmakuContext.create(); //设置弹幕样式 this.mContext.setDanmakuStyle(DANMAKU_STYLE_STROKEN, 3) .setDuplicateMergingEnabled(false) ... if (this.model != null) { this.mParser = this.createParser(); this.model.setCallback(new Call(that)); // 设置弹幕点击事件监听 this.model.setOnDanmakuClickListener(new OnDanMu(that)); ... } }
/* * 使用BaseDanmaku类初始化弹幕实例,并设定一系列弹幕的参数值,包括弹幕内容、样式等 * 添加到提前实例化的弹幕模型model对象上 */ private addDanmaku(isLive: Boolean) { if (this.mContext) { let danmaku: BaseDanmaku = this.mContext.mDanmakuFactory.createDanmaku(BaseDanmaku.TYPE_SCROLL_RL); danmaku.text = "这是一条弹幕" + SystemClock.uptimeMillis(); danmaku.padding = 5; danmaku.priority = 0; // 可能会被各种过滤器过滤并隐藏显示 danmaku.isLive = isLive.valueOf();// 是否为在线弹幕 danmaku.setTime(this.model.getCurrentTime() + 1200); if (this.mParser) { danmaku.textSize = 25 * (this.mParser.getDisplayer().getDensity() * 0.8); } danmaku.textColor = 0xffff0000; danmaku.textShadowColor = 0xffffffff; danmaku.borderColor = 0xff00ff00; this.model.addDanmaku(danmaku); } }
/*
* DanmakuParser类中包含了对弹幕数据的解析方法,解析每条弹幕的开始/结束时间、样式、内容等
*/
private createParser(): BaseDanmakuParser {
let parser: BaseDanmakuParser = new DanmukuParser();
let jsonSource = new JSONSource(sourceData);
parser.load(jsonSource);
return parser;
}
{ "DanmakuType":4, "alphaDuration":0, "beginAlpha":0, "beginX":0, "beginY":0, "duration":0, "endAlpha":0, "endX":0, "endY":0, "index":1, "isQuadraticEaseOut":false, "rotationY":0, "rotationZ":0, "text":"hhhhhhhhh", "textColor":-9946501, "textShadowColor":-16777216, "textSize":25, "time":219370, "timeOffset":0, "translationDuration":0, "translationStartDelay":0 }
let videoPlayEvent: emitter.InnerEvent = {
eventId: 1
};
let videoInitEvent: emitter.InnerEvent = {
eventId: 2
};
let videoPauseEvent: emitter.InnerEvent = {
eventId: 3
};
不涉及
danmakuplayer // har类型
|---/src/main/ets/model
| |---DanmakuData.ets // 数据模型层-列表数据模型
| |---DanmakuParser.ets // 数据模型层-列表项数据模型
|---/src/main/ets/view
| |---VideoView.ets // 视图层-场景列表页面
为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05
https://qr21.cn/FV7h05
https://qr21.cn/FV7h05
https://qr21.cn/FV7h05
https://qr18.cn/F781PH
https://qr18.cn/F781PH
1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。