`
dydytd3400
  • 浏览: 22932 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

AJSPlayer的开发暂停

阅读更多

前段时间,用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,体积怎么也减不下来……

所以,这个项目不得不暂停,我也将我的源码开放出来,希望大家帮忙看看,提提意见,指教一二,帮助我改进。

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

分享到:
评论
1 楼 明之海 2012-03-23  
博主,您好!感谢开放的源码!
自己对这方面比较感兴趣,才接触研究FLEX,
期间遇到一个很弱的问题想请教,我在VideoPlayerSkin.mxml中添加一个select id为arr
如何在AJSPlayer,mxml中调用这个控件!

再有 KNH的秘密基地 的ABPlayer怎么该为本地部署!PHP的数据源和其中一些配置如何改!

非常感谢!

相关推荐

Global site tag (gtag.js) - Google Analytics