ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

bullet-screen-cj的DanmakuContext配置清单:样式、防重叠、行数限制等8大设置详解

bullet-screen-cj的DanmakuContext配置清单:样式、防重叠、行数限制等8大设置详解 bullet-screen-cj的DanmakuContext配置清单样式、防重叠、行数限制等8大设置详解【免费下载链接】bullet-screen-cj弹幕发送、解析与绘制库项目地址: https://gitcode.com/Cangjie-TPC/bullet-screen-cjbullet-screen-cj 是一款基于仓颉语言的弹幕发送、解析与绘制库核心配置全部集中在DanmakuContext上下文中。本文面向新手用 8 大类设置讲清弹幕库的配置方法显示开关、描边样式、透明度与字号、边距、同屏数量、行数限制、防重叠、滚动速度并附常用默认值速查表读完即可调出想要的弹幕效果。快速入门一条链式配置搞定基础设置所有配置都是链式调用每个set方法都返回DanmakuContext自身最后把配置对象交给 DanmakuViewModel.prepare() 即可生效var context DanmakuContext.create() context.setDanmakuStyle(DANMAKU_STYLE_STROKEN, 3.0) // 描边 .setScaleTextSize(1.2) // 字号放大 .setScrollSpeedFactor(1.2) // 滚动速度 .setDanmakuMargin(40) // 边距 model.prepare(parser, context) // 应用到弹幕视图官方示例的完整写法含行数与防重叠配置见 my_view.cj可直接照抄。 所有方法都在 model_danmaku_context.cj 中定义配合 doc/feature_api.md 查阅最完整。设置1弹幕类型显示开关5类弹幕独立控制支持 5 类弹幕的独立显隐默认全部显示源码第92-96行配置项作用说明setFTDanmakuVisibility顶部固定弹幕置顶不移动setFBDanmakuVisibility底部固定弹幕贴底不移动setL2RDanmakuVisibility从左到右滚动弹幕较少见setR2LDanmakuVisibility从右到左滚动弹幕最常见默认向右滚动消失setSpecialDanmakuVisibility特殊弹幕居中/定时出现隐藏某类弹幕的本质是把该类型加入过滤器setDanmakuVisible 实现不影响其他类型。设置2样式与外观——描边、阴影、投影与字体用setDanmakuStyle(style, values)一个方法切换 5 种文字效果常量定义见 model_i_displayer.cj样式常量values 传参效果DANMAKU_STYLE_NONE-纯文字无任何修饰DANMAKU_STYLE_SHADOW阴影半径柔和阴影DANMAKU_STYLE_STROKEN描边宽度经典白字黑边最常用DANMAKU_STYLE_PROJECTIONoffsetX、offsetY、alpha投影alpha 取值 0~255DANMAKU_STYLE_DEFAULT-自动其他外观配置setDanmakuBold(true)粗体显示对部分字体无效源码setTypeface(字体名)自定义字体参照 ohos.font源码setCacheStuffer(...)默认SimpleTextCacheStuffer只支持纯文字图文混排请改用SpannedCacheStuffer源码设置3透明度与字号缩放setDanmakuTransparency(p)取值 0~255值越大越透明默认 255不透明内部换算为 paint alpha源码setScaleTextSize(p)字号缩放系数默认 1.0。设为 1.2 即整体放大 20%同时会清空文字高度缓存并重新测量源码设置4边距控制setDanmakuMargin(m)四周边距单位 px默认 0setMarginTop(m)单独设置顶部边距让滚动弹幕整体下移官方示例设为 40避免弹幕贴边context.setDanmakuMargin(40) context.setMarginTop(60)设置5同屏弹幕数量限制密度控制setMaximumVisibleSizeInScreen(n)控制同屏最多显示几条弹幕源码取值行为-1默认按绘制效率自动调整低帧率自动减量0不限制注册的数量过滤器被注销n同屏最多 n 条超出部分被数量过滤器拦截⚠️ 注意单个弹幕对象上priority 0的弹幕属于高优先级不会被过滤器过滤见 feature_api.md。设置6最大显示行数限制setMaximumLines(pairs)按弹幕类型分别设置行数上限Key 为弹幕类型常量Value 为最大行数var maxLinesPair: HashMapInt64, Int64 HashMap() maxLinesPair.put(BaseDanmaku.TYPE_SCROLL_RL, 5) // 滚动弹幕最多5行 context.setMaximumLines(maxLinesPair)传空 Map 即取消行数限制过滤器注销支持 4 种 KeyTYPE_SCROLL_RL、TYPE_SCROLL_LR、TYPE_FIX_TOP、TYPE_FIX_BOTTOMpriority 0的高优先级弹幕不受行数限制类型常量定义见 model_base_danmaku.cj。设置7防弹幕重叠preventOverlappingpreventOverlapping(pairs)控制各类型弹幕是否允许互相遮挡源码var overlapping: HashMapInt64, Bool HashMap() overlapping.put(BaseDanmaku.TYPE_SCROLL_RL, true) // 滚动弹幕防重叠 overlapping.put(BaseDanmaku.TYPE_FIX_TOP, true) // 顶部弹幕防重叠 context.preventOverlapping(overlapping)Value 为true时开启防重叠同一行位置被占用时新弹幕会换到下一行传空 Map 恢复默认允许重叠对应判断方法isPreventOverlappingEnabled()setOverlapping(pairs)是它的别名效果相同源码设置8滚动速度与重复弹幕合并setScrollSpeedFactor(p)滚动速度系数只对左右滚动弹幕生效系数越大滚得越慢默认 1.0源码setDuplicateMergingEnabled(enable)合并重复弹幕相同内容多条弹幕会归并为一条默认关闭alignBottom(enable)滚动弹幕底部对齐排列默认关闭进阶配置与速查表几个不常用但实用的接口setColorValueWhiteList(colors)只显示白名单内的文字颜色setUserIdBlackList(ids)/addUserIdBlackList(ids)按用户 ID 屏蔽ID 为 0 表示游客弹幕setUserHashBlackList(hashes)/addUserHashBlackList(hashes)按用户 hash 屏蔽blockGuestDanmaku(true)一键屏蔽游客弹幕registerConfigChangedCallback(listener)监听任意配置项变更适合做设置面板联动resetContext()重置为初始状态8 大配置速查表配置方法作用默认值set*DanmakuVisibility5类弹幕显隐开关全部显示setDanmakuStyle描边/阴影/投影默认样式setDanmakuTransparency/setScaleTextSize透明度 / 字号缩放255 / 1.0setDanmakuMargin/setMarginTop边距0setMaximumVisibleSizeInScreen同屏弹幕上限-1 自动setMaximumLines分类型行数限制不限制preventOverlapping分类型防重叠允许重叠setScrollSpeedFactor/setDuplicateMergingEnabled滚动速度 / 重复合并1.0 / 关闭常见问题Q1配置后为什么没生效确认配置对象已经通过model.prepare(parser, context)传入且配置在 prepare 之前完成部分修改如字体、字号会触发重新测量下一帧才可见。Q2为什么设置了行数限制某些弹幕还是溢出了priority 0的高优先级弹幕通常用于本机发送会跳过过滤器不受行数与同屏数量限制。Q3图文弹幕不显示图片默认SimpleTextCacheStuffer只支持纯文字请改用SpannedCacheStuffer后调用setCacheStuffer。完整接口文档见 doc/feature_api.md可运行的功能示例见 entry/src/main/cangjie/src/index.cj 与 entry/src/main/cangjie/src/my_view.cj。【免费下载链接】bullet-screen-cj弹幕发送、解析与绘制库项目地址: https://gitcode.com/Cangjie-TPC/bullet-screen-cj创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表