首页/新闻资讯/正文详情

bullet-screen-cj入门实战:几行代码实现弹幕发送、暂停与显示控制

发布时间:2026/9/24 23:36:32 来源:云帆数科 栏目:资讯中心
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),仅供参考

相关推荐

小区电动自行车充电改造:从飞线到车棚的实战复盘
小区电动自行车充电改造:从飞线到车棚的实战复盘

1. 改造之前的真实状态:楼道成了“夜间停车场”我们小区不大,1264户,2013年交付。早两年我并没有特别留意楼下的停车问题,直到去年冬天物业在业主群里发了一组巡查照片:三楼窗台甩出一根白色插线板,下面又接… · 2026/9/24 23:36:32

用GLiNER2.5-Multi做命名实体识别完全实操:从定义实体标签到置信度调优
用GLiNER2.5-Multi做命名实体识别完全实操:从定义实体标签到置信度调优

用GLiNER2.5-Multi做命名实体识别完全实操:从定义实体标签到置信度调优 【免费下载链接】gliner2.5-multi-v1 项目地址: https://ai.gitcode.com/hf_mirrors/fastino/gliner2.5-multi-v1 做命名实体识别(NER)还要写规则、调标注&… · 2026/9/24 23:36:25

深入理解 pflag:在 distribution 等 Go 项目中实现 POSIX/GNU 风格命令行参数解析
深入理解 pflag:在 distribution 等 Go 项目中实现 POSIX/GNU 风格命令行参数解析

云原生存储 【免费下载链接】distribution The toolkit to pack, ship, store, and deliver container content 项目地址: https://gitcode.com/gh_mirrors/dis/distribution 点击查看 免费下载 导读 pflag 是 Go 标准库 flag 包的"即插即用"替代实现&a… · 2026/9/24 23:36:25

深度学习新闻分类推荐系统:从TextCNN到个性化推荐
深度学习新闻分类推荐系统:从TextCNN到个性化推荐

简介:这份基于深度学习的新闻分类推荐系统Python实现源码,是专为课程设计与期末大作业准备的高分项目,下载后无需修改即可运行,适用于需要快速交付完整课题的高校学生。系统涵盖新闻数据预处理、文本分类模型训练、推荐逻辑展示等… · 2026/9/24 23:59:53

汽车电子底层软件开发:AUTOSAR与CAN总线实战解析
汽车电子底层软件开发:AUTOSAR与CAN总线实战解析

1. 这门“汽车电子底层软件开发就业课”到底在教什么?——不是写个LED闪烁就能上岗的很多人看到“汽车电子底层软件开发就业课”这个标题,第一反应是:不就是嵌入式C语言单片机CAN通信?刷几道LeetCode、调通一个STM32 CAN收发例程&… · 2026/9/24 23:59:53

Vim基础操作全攻略:保存退出、模式切换与高频命令实战
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保… · 2026/9/24 23:59:53

Python+CNN车牌识别实战:从数据预处理到模型训练与部署
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据… · 2026/9/24 23:59:53

AI元人文:从工具使用到思维重构的深度探索
AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决… · 2026/9/24 23:59:53

《AI Agent 场景应用 - MobileOpenClaw》第5-9节:会话上下文细化处理实战指南
《AI Agent 场景应用 - MobileOpenClaw》第5-9节:会话上下文细化处理实战指南

文档教程后端 【免费下载链接】CodeGuide :books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总,旨在为大家提供一个清晰详细的学习教程,侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助,请给予支持(关注、… · 2026/9/24 23:59:47

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码