HJDanmakuDemo
HJDanmakuDemo copied to clipboard
展示弹幕时,push进入一个新的页面,返回弹幕会重新开始
在当前页面正常展示弹幕,点击按钮push进入一个新的页面,侧滑/点击返回发现弹幕是重新开始的
显示什么弹幕是根据弹幕时间戳以及- (float)playTimeWithDanmakuView:(HJDanmakuView *)danmakuView; 综合计算出来的
目前的测试场景是: 我起了一个0.1s的定时器来发送普通文本弹幕 停留在当前页面时弹幕会按照预期挨个显示出来 出问题场景: 在当前页面push进入一个新的页面,返回这个页面,发现屏幕上的弹幕重新开始展示 present出来一个界面(非全屏模式)不会有这个问题 所以猜测跟使用CADisplayLink来做弹幕刷新有关
CADisplayLink只是当时定时器做触发用的。你是视频模式还是直播模式?视频模式:弹幕什么时候显示是根据playTimeWithDanmakuView反馈的播放时间以及弹幕的时间决定的。直播模式:弹幕没有时间戳的概念,什么时候send什么时候显示
我是用的直播模式,本地模拟大量弹幕发送时出现的这个问题
后面再观察下正式数据有没有这个问题
那你看看返回时模拟数据是不是重置了
关键问题其实是你的定时器invalidate且设置为nil了导致的。不需要在viewDidDisappear关闭定时器,而是将弹幕pause,等到返回的时候,再play。不过这样也有一个问题,就是push界面的时候定时器依然在动,要想办法停掉即可。