论坛首页 编程语言技术论坛

AJSPlayer的开发暂停

浏览 2001 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-10-01  

前段时间,用4.5尝试着做了一款弹幕播放器,基本功能是已经实现了,下面是演示地址:
http://dzlg.sinaapp.com/?page_id=85

其实,这个项目原来的计划并不只是单纯的弹幕播放器而已。最初的设想是插件结构模式来完成该项目。设计足够强大的接口,提供给外部JS来执行,让高级用户(技术宅)实现外部算法,从而实现各种高级弹幕效果的插件,使普通用户也能直接复用。
不过,随着时间的推移,我发现这样的接口并不足够强大,后来简单了解了一下bilibili的弹幕播放器,看了一下它的高级弹幕,总觉的那种对弹幕高度自定义的效果,才是我想要的。可是,我又不希望让播放器在播放时来花大量时间和资源去运行时动态编译并执行高级弹幕,而且,这种弹幕是不可复用的,重用性太低,普通用户根本就没办法再次使用,甚至看都看不懂……

于是,我开始思考新的插件结构。最终想出来的解决方案是——我设计一个接口类IPlugin,并有一个实现PluginImpl,这个PluginImpl同时继承于Sprite(因为AS3要调用外部swf方法,那这个swf则必须是Sprite的子类),他的所有实现方法都是弹幕播放器所暴露的接口,最终将PluginImpl做成一个SWC,提供给高级用户来编辑弹幕播放器的高级弹幕的插件。然后将编译之后生成的swf上传并存储在服务端,而弹幕播放器在每次运行的时候,则会去主动调用普通用户选择安装的那些插件,提供给播放器来执行外部swf文件,实现AS3的插件结构模式。

本来这一方案是可行的,可惜这种方案的耦合性太强,会使那些高级用户编辑插件时觉得反感,从而,这项目也就失去了它的意义。

另外还有一个问题,就是关于项目体积的这一因素。由于我采用的FLEX来开发,所以使用到了SDK的freemarker类库,并且,我希望每个弹幕效果都继承于Animate这一父类,而插件要求主类必须继承于Sprite类,所以常规的FLEX项目是不行的,则必须是AS3项目,而AS3项目的SDK没有freemarker库,就不能使用Animate类,我则必须提供包含了freemarker类库的SWC,这个时候,如若所有的插件都使用了这个类库,那体积则会相当庞大。本来RSL(运行时共享库)可以解决这一问题,可是一旦SWC中包含了其他自定义类(比如上面提到的PluginImpl),就没办法使用RSL,体积怎么也减不下来……

所以,这个项目不得不暂停,我也将我的源码开放出来,希望大家帮忙看看,提提意见,指教一二,帮助我改进。同时,如果对该项目有兴趣的童鞋、前辈,也可以通过下面联系我。
邮箱:87618865@qq.com
QQ:87618865

下面是源代码(有点乱啊,倒入后需要再编译一次):
AJSPlayer.zip

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics