弹幕能极大的增强用户交互感、也是直播吸引人的关键点之一。
今做一个小分享,基于
BarrageRenderer库
的弹幕simpleDemo。代码部分示例:
/** 生成精灵描述 - 过场文字弹幕*/
- (BarrageDescriptor *)walkTextSpriteDescriptorWithDirection:(NSInteger)direction{
BarrageDescriptor *descriptor = [[BarrageDescriptor alloc]init];
descriptor.spriteName = NSStringFromClass([BarrageWalkTextSprite class]);
descriptor.params[@"text"] = self.danMuText[arc4random_uniform((uint32_t)self.danMuText.count)];
descriptor.params[@"textColor"] = Color(arc4random_uniform(256), arc4random_uniform(256), arc4random_uniform(256));
descriptor.params[@"speed"] = @(100 * (double)random()/RAND_MAX+50);
descriptor.params[@"direction"] = @(direction);
return descriptor;
}
#pragma mark - 弹幕控制 方法
- (void)autoSendBarrage
{
NSInteger spriteNumber = [_renderer spritesNumberWithName:nil];
if (spriteNumber <= 50) { // 限制屏幕上的弹幕量
[_renderer receive:[self walkTextSpriteDescriptorWithDirection:BarrageWalkDirectionR2L]];
}
}
- (IBAction)startBtn:(id)sender {
[self setupRenderer];
[_renderer start];
}
- (IBAction)closeBtn:(id)sender {
[_renderer stop];
[_renderer.view removeFromSuperview];
_renderer = nil;
}
#pragma mark - 弹幕描述符生产方法
- (NSArray *)danMuText
{
return [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"danmu.plist" ofType:nil]];
}
- 效果图:
- 此处为Demo传送门