bullet-screen-cj入门实战:几行代码实现弹幕发送、暂停与显示控制
bullet-screen-cj入门实战几行代码实现弹幕发送、暂停与显示控制【免费下载链接】bullet-screen-cj弹幕发送、解析与绘制库项目地址: https://gitcode.com/Cangjie-TPC/bullet-screen-cjbullet-screen-cj 是一款基于仓颉语言的开源弹幕库支持纯文本弹幕发送、图文混排与 GIF 动图弹幕绘制并提供暂停/继续、隐藏/显示、播放进度跳转等完整的播放状态控制。本文带你用不到 5 分钟跑起第一条弹幕再用几行代码完成弹幕的暂停与显隐控制适合刚接触 HarmonyOS 弹幕开发的初学者。一、30 秒认识弹幕库 bullet-screen-cj bullet-screen-cj 把发送 → 解析 → 绘制三个环节拆成了几组职责清晰的类新手只要认识下面四块就够了组件角色DanmakuView弹幕显示组件一行代码嵌入你的 UIDanmakuViewModel播放控制器负责发送、暂停、继续、显隐DanmakuContext配置中心控制字体、描边、速度、显示区域BaseDanmakuParser数据源解析器内置 JSON 弹幕格式内置特性包括左右滚动、顶部/底部固定、特殊弹幕、图文混排、GIF 动图弹幕、显示区域大小设置等。完整示例代码见 entry/src/main/cangjie/src/my_view.cj运行后能看到滚动弹幕与控制按钮组成的完整界面。上图是示例应用的启动背景图配合滚动弹幕一起看氛围感一下就上来了。二、弹幕库接入项目最快方法只改 2 个配置文件以拷贝模块方式接入为例步骤非常短克隆项目并把danmaku目录拷贝到你的工程根目录git clone https://gitcode.com/Cangjie-TPC/bullet-screen-cj在 entry/oh-package.json5 的dependencies中加一行danmaku: file:../danmaku在 entry/src/main/cangjie/cjpm.toml 中添加仓颉依赖[dependencies] danmaku {path ../../../../danmaku/src/main/cangjie, version 1.0.0}代码里一行导入import danmaku.*库的包声明为package danmaku入口文件见 danmaku/src/main/cangjie/src/package.cj。三、5 步跑起来第一条弹幕第 1 步创建控制器与显示区域var model DanmakuViewModel() var context DanmakuContext.create() model.setWidth(720.0) model.setHeight(720.0)第 2 步配置显示效果全部可选不设也有默认值context.setDanmakuStyle(DANMAKU_STYLE_STROKEN, 3.0) // 描边样式 context.setScrollSpeedFactor(1.2) // 滚动速度系数 context.setScaleTextSize(1.2) // 字体大小系数 context.setMaximumLines(linesPair) // 最大显示行数 context.preventOverlapping(overlapPair) // 防重叠开关第 3 步绑定解析器准备就绪var parser BaseDanmakuParser.getDefaultJsonDanmakuParser() parser.load(yourDataSource) model.setCallback(callback) // 在 prepared 回调里调用 model.start() model.prepare(parser, context)第 4 步把弹幕组件加进页面DanmakuView(model: this.model)第 5 步发送第一条弹幕var d context.mDanmakuFactory.createDanmaku(BaseDanmaku.TYPE_SCROLL_RL).getOrThrow() d.text 你好 仓颉! d.textColor 0xffff0000 d.setTime(model.getCurrentTime() 1200) model.addDanmaku(d)弹幕类型以常量形式定义在 danmaku/src/main/cangjie/src/model_base_danmaku.cj常量含义TYPE_SCROLL_RL从右到左滚动弹幕TYPE_SCROLL_LR从左到右滚动弹幕TYPE_FIX_TOP顶部固定弹幕TYPE_FIX_BOTTOM底部固定弹幕TYPE_SPECIAL特殊弹幕四、一行代码控制弹幕暂停、继续、隐藏与显示拿到model之后常用操作都是一行一个方法需求调用开始播放model.start()暂停播放model.pause()继续播放model.resume()暂停/继续切换model.toggle()隐藏弹幕model.hide()显示弹幕model.show()跳转到指定时间点model.seekTo(ms)清屏清除已播放弹幕model.clearDanmakusOnScreen()停止并释放资源model.stop()/model.release()示例应用正是一个按钮对应一个方法的做法点pause直接model.pause()点resume直接model.resume()做播放/暂停开关的交互时几乎零成本。五、进阶玩法图文混排与 GIF 动图弹幕 图文混排把缓存填充器换成SpannedCacheStuffer再给弹幕对象设置image即可context.setCacheStuffer(SpannedCacheStuffer(), cacheStufferAdapter: adapter) d.image ImgObj(resource://RAWFILE/startIcon.png, 33.0, 33.0) d.text 仓颉你好..GIF 动图弹幕把 GIF 拆成帧序列后挂到弹幕上设置动图模式d.setPixelMapList(frames) // PixelMap 帧列表 d.setIsAnimation(true)下面这张就是示例中GIF按钮所使用的动图素材RRR.gif发送后会以小巴士造型一路开过屏幕六、API 速查与延伸阅读 完整接口文档doc/feature_api.md示例应用入口页数据源切换entry/src/main/cangjie/src/index.cj示例弹幕页发送、暂停、GIF、图文混排entry/src/main/cangjie/src/my_view.cj自定义 JSON 解析器实现entry/src/main/cangjie/src/danma_parser.cj项目说明与源码目录结构README.md版本环境在 DevEco Studio 5.0.13.200 Cangjie Compiler 0.53.20 下验证通过。最后小结DanmakuContext管效果、model.prepare()管准备、addDanmaku()管发送pause()/resume()/show()/hide()管控制——几行代码就能让你的应用拥有丝滑的弹幕互动效果。【免费下载链接】bullet-screen-cj弹幕发送、解析与绘制库项目地址: https://gitcode.com/Cangjie-TPC/bullet-screen-cj创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考