Closed VirusYu closed 2 years ago
已收到
又仔细看了下源码,stop方法没有实现啊……直接是个空函数……
哦,悬停这个的话,可以这么做:
var dummyTime = function () { }; // 空函数,让弹幕无视播放器推动
cm.addEventListener('enterComment', function(cmt){
// 监听 CommentManager 的 enterComment 事件
// 此事件在每个弹幕初始化完毕后实现
cmt.dom.addEventListener('click', function () {
// 抓出弹幕对应的dom元素,监听点击事件
if (cmt.border) {
// 这里我们用边框记录状态,如果已有边框则恢复弹幕运行
cmt.time = cmt._oldTime.bind(cmt); // 恢复记住的原始推动方法
cmt.border = false; // 关掉边框
cmt.time(0); // 触发推动
} else {
cmt._oldTime = cmt.time; // 记住弹幕的推动方法
cmt.time = dummyTime; // 换成一个空函数,无视播放器推动
cmt.border = true; // 打开边框
cmt.stop(); // 触发停止函数(用于停止基于css的弹幕)
}
});
});
想测试效果的话,可以打开demo页面,选择顶栏的 【Code】标签,然后在 Input Window 区域粘贴下方代码,点击【Run】 之后回到 【Main】标签,随便一个 demo。
之后播放期间内,点击弹幕就会把它停住(并且显示边框),再点一下则会重新开始弹幕移动。
你好,我看文档中存在 remove方法,但是在源码中没有发现原型上存在remove方法
remove(data:ICommentData) 从弹幕列表中删除弹幕。注意参数data必须是同一个实例引用,否则即使参数都一样也不会导致弹幕被删除。 删除只会从时间轴中删除,如果被删除的弹幕正再播放,不会导致正在播放的弹幕消失。 remove(filterFunction:Function) 从弹幕列表中删除弹幕。filterFunction会在每个弹幕对象上被调用。当filterFunction返回 true 时(严格),删除相应弹幕。
remove系列还没在现在用的版本实现呢,文档是给1.0预留的API。。。目前计划是把剩余还是传统 js 写的几个类(CommentManager等)换到TS里面,但是ts那边还没写完(主要是出于考虑各种类型),所以就一直也没加进去。
源码中发现以下代码,是否可以通过添加弹幕的唯一标识,来过滤runline中的弹幕,找到对应实例后执行stop呢,stop后如何重新开始移动呢