庞海礁
庞海礁
博客Title: 庞海礁的个人空间 博客地址: http://www.olinone.com/ RSS聚合地址:http://www.olinone.com/?feed=rss2 博主微博地址(选填):
你是直播还是视频场景?prepareDanmakus是在开始之前start开始调用,预加载数据的,如果是直播场景,start之后再从服务器拉取数据,直接调用sendDanmakus即可,至于很多数据不显示是因为弹幕显示原则是相互不碰撞,如果短时间内,弹幕数据过多,肯定会有丢失的
HJDanmakuConfiguration对象里面有个tolerance属性,表明一个弹幕从收到到显示的冗余时间,默认2s,意思是如果2s内还是没有多余空间显示就会过滤掉
弹幕库不涉及业务逻辑,暂时没有清除逻辑,你应该从设计上杜绝重复逻辑。此外,你也可以考虑- (BOOL)danmakuView:(HJDanmakuView *)danmakuView shouldRenderDanmaku:(HJDanmakuModel *)danmaku这个接口,控制要不要显示某些弹幕
如果弹幕数量没那么大,可以把api返回弹幕都存起来,拉新数据时,先过滤一遍再sendDanmakus
过滤弹幕最好在你自己定义的数组里面做,如果要改动底层代码,必须要先看懂代码,否则不建设修改,你自己维护一个已发送的弹幕id数组,应该要不了多少性能
目前看应该没什么大问题
后面考虑一下,你可以先用pod,使用runtime动态化调用* [self.danmakuSource reset];就可以了
[[self valueForKey:@"danmakuSource"] performSelector:@selector(reset)];
对的,目前弹幕的渲染机制是每条弹幕显示时间是固定的,与行业内展示规则保持一致的!