Jim Chen
Jim Chen
> 直接修改runline弹幕的ttl和dur 确实这样实现。。。不过CSS弹幕有一些特殊的坑,因为不是靠CommentManager驱动,所以需要多 call 一下 `cmt.stop()` 来收动删掉旧的CSS,这样下一个tick就能补回来。 目前版本上,实现此效果的样本代码,可在demo → code里面测试运行: ```Javascript // 弹幕速度降低到原来的 1/4 cm.options.global.scale *= 4; cm.runline.forEach(function (cmt) { cmt.ttl *= 4; cmt.dur *= 4; cmt.stop(); // 这个有点hack });...
确实有打算输出成UMD,不过主内核(CommentManager)还在重构到TypeScript,重构完成(整个项目都会变成TS),应该就可以以module形式输出了。 NPM上的包有新的,最新稳定版(latest)依然在 `0.9.3` 这个没错。最新的RC测试版是 `0.11.0-rc1` 。[参考这里](https://www.npmjs.com/package/comment-core-library) 的 Versions 页。因为0.11系列有一些不兼容的变化,所以一直还在等更广泛的测试(和bug report)。想 include 最新的话直接[把RC的版本写进去](https://github.com/jabbany/ABPlayerHTML5/blob/master/package.json)就可以。 路线上,在完成 CCL 的 TS 重构之后,就会锁定第一版API定义,作为 `1.0.0` 发布到 `latest`。目前docs里面的API还有一些没实现,不过估计不久就可以完整实现了。
这个一直有在plan里面,但是现代平台更新太快了导致项目实在是跟不上最新的技术树。。。 库里面的TS是第一代刚刚出来的时候的语法,所有的模块依存关系都不是靠现代的 `import` 语法控制,而是手动通过 `` 和 `module {}` (~= namespace) 管理的。现在要用现代打包的话,需要把这些都port到新的语法,重新管理模块之间的依存关系,同时还得保持兼容传统 `` 引入(无模块系统)的码。 这个迁移project我在本地尝试了好几次,都不太理想,所以一直都没能搞出可用的 UMD 打包。如果有对新的打包系统比较熟悉的,欢迎开PR帮着给搞出来。。。
Canvas一直的问题就是没法测高度。。。。高度又没有很好的线性关系。。。
换行要智能的处理 `\r` 、`\n`和 、`\r\n`。Canvas不能识别任何排版,所以必须要手动处理,这也是一个缺点,因为有一部分代码做了一些固定化处理,不能依赖浏览器的排版了。。。
px是字号。。。“理论上字号可以理解为高度”,实际上不完全是这样。参考 http://stackoverflow.com/questions/1134586/how-can-you-find-the-height-of-text-on-an-html-canvas
@Catofes 换行还是挺重要的,尤其是对于神弹幕视频,经常需要换行来排版。。。
主要是增加了潜在的BUG位置。。。
没有特别的顺序。。。哪个后出现哪个就在上面。。。 B站是通过弹幕池排放不同层关系的。。。
嗯,去年就发现了那个canvas版。其实基于CCL二次开发的canvas版实现有好几个。。。 要说CM框架其实应该没怎么改。主要增加了单弹幕的 factory 和 渲染器设置。这些应该更方便加一些新的渲染模式(比如canvas之类的)。 看了一下可变大小canvas实现挺高端!我猜是因为直接在大canvas上画图的话太大了可能硬件加速会失败,然后操作可能比较慢?我见过的别的用固定canvas舞台的主要是每个弹幕有一个绘图context缓存这个弹幕的信息,然后运行的时候直接copy到主舞台。不过其实canvas主要就是这种奇怪的case好多不好处理,不同设备也有一些奇怪的表现。 主库一直没加上canvas实现的主要问题是因为高度测量的边角case。目前那个measureText并不能给出字体高度,然后pixel height又不是很靠谱(中文的话应该还可以,别的复杂一些的字体和文字很容易坑)。第二点是自己需要处理换行啊之类的,略烦。据说 HTML5 Canvas Spec 要加字体高度信息了,应该会好不少。 ---- BAS目前没有实现计划,毕竟 B站新的BAS也是基于JS写了个parser+把BAS给interpret成JS,技术上去重新搞没啥意思(坐等B站自己开源?)。由于CCL这个代码部分是插入的plugin,所以如果有人实现了也可以很容易的用。 其次是,我不是很喜欢他们的设计。新的BAS比原来代码语言灵活度差了很多,着重点还是在按钮之类的互动单元(对于CCL还原高级弹幕的目标没啥用)。而且没有解决任何原来语言的缺点(代码弹幕没法跟时间轴同步,效果无法硬件加速等等。这里一部分由第三方那个Akari库 解决 hack了一下的)。 长远上,CCL可能会采用类似的非eval自己parse的语言。新的语言应该还是基于 KagerouEngine 所以基本设计跟现在一样,是开web worker然后给host发指令。估计要是真的实现,只会做CCL自有的一个版本,专门面向解决高级弹幕的问题(感兴趣的话欢迎到 [这里](https://github.com/OpenDanmakuCommunity/gas) 填坑!)。至于是新的语言是否可以无转换包容 BAS 或者跟现在这个 biliscript 那样有足够程度的兼容性就不知道了。 ---- PR随时都是欢迎的,不过这个库也是很老的码了,当初都是为了还原老B站播放器神弹幕的。现在大部分搞弹幕的都不太在乎高级弹幕,更不在乎代码弹幕。CCL...