弹幕播放器-AJSPlayer



距离上次(9.10)将新的弹幕播放器放入孵化器,并正式提上日程(充充范儿),距今(9.16)已经五个工作日了。也是时候汇报一下进度了。

 

这个弹幕播放器,完全自主开发,对acfunbilibili的播放器有一定参考。区别于这两个播放器的核心特点是ASJS的交互,并实现弹幕effectJS插件接口,因此暂时将该播放器命名为AJSPlayer(AS与JS的结合)。

 

AJSPlayer的简单工作逻辑描述:

用户交互时,通过UI版块,调度播放器,并创建弹幕控制器。弹幕控制器对播放器进行侦听,根据播放进度和状态,创建弹幕实体,装载入弹幕效果(弹道),并控制弹道,放入弹幕版并播放/暂停弹幕。

       下面是示意图,不知道表述清楚了没……

弹幕播放器-AJSPlayer_第1张图片

视频播放器:负责视频的播放

弹幕控制器:对所有弹幕进行管理,根据播放器的进度,解析弹幕列表,并对应的创建弹幕实体,装载至弹道(effect),生成一条弹幕信息,决定它在弹幕版的显示位置,最终完成其播放、暂停控制。

弹幕实体:即文本弹幕,亦或是图片弹幕,甚至是声音、视频弹幕。

弹道:弹幕实体的播放特效。即弹幕被放置于弹幕版时,它所跑动的轨迹。如滚动、顶部、底部等等。弹道也决定了弹幕实体的生存周期,它将会管理弹幕实体在弹幕版上的生存时限,决定何时addChild,何时removeChild

AJSPlayer核心特点则在于弹道的自定义上。

       AJSPlayer将会提供一个特殊弹道的工厂类,该工厂类会创建一个弹道(interface)的实现类,该实现类的play()、pause()等对弹道播放特效控制的接口会直接调用页面对应的JS方法,而该实现类的addChildremoveChild方法已经在内部实现了,不会再去调用对应的JS方法,所以自定义JS弹道的人们无需关心应该如何addChildremoveChild,只需要调用该AS接口即可。

       现在棘手的问题就是——应当如何存储用户自定义的JS弹道插件,并能即时使用?

弹幕版:放置所有弹幕的面板,与播放器剥离,只是位置重叠了,可通过JS调用AJSPlayer所开放的AS接口来控制其位置。

 

界面预览图

弹幕播放器-AJSPlayer_第2张图片


注:该播放器的SDK版本为4.5.1,之所以选择这个高版本,不是因为什么所谓的FLEX 4时代。而是因为该播放器将会以成品的方式存在,不存在二次开发,所以无需考虑低版本无法兼容高版本的情况。不过,日后会考虑做一个SWC插件,到时候就会使用较低版本的SDK,以保证更好的兼容性。


 

你可能感兴趣的:(Flex,弹幕播放器)