您的位置:首页 > 其它

从我的第一个Flex应用说起(二)——规范与设计 推荐

2009-09-09 10:40 232 查看
今天,IBM中国研究院的Open House拉开帷幕了,我胡搞瞎搞的FLV播放器也被放到了生产机器上,版本1.0beta3。当然在功能和设计上还很不完善,还需要重新梳理。我还记得写上一篇的时候版本是0.4,如今已经做了很多改进,与当初的版本相比可以说已经面目全非了。与美工MM合作搞出来的界面、增强了的各种行为监听等等。只是由于是赶工的,完全是函数式的编程方式,搜索的东西也都堆在了一个文件里,没来得及整理;也没有注释和文档,还没来得及加上。毕竟,只有数据结构、算法和文档都齐全且合格了才有资格约等于软件。我想这些在之后出1.0候选版本的时候再加上吧。这两天主要还是为Open House做支持。
这篇文章要说的第一点恰恰是我现在还没加入这个小程序上的——规范。写代码、编程序是需要规范的,不论用什么语言、写什么应用都是一样。团队的开发规范由于这次紧急的任务我还没有搞出来。Java编码规范我会在有空的时候写出来,如果Flex在团队中得到广泛应用的话我也会写Flex的编码规范,当然还有项目规范。这个事我还是比较胸有成竹的,因为为以前所在的几个团队都出过规范。每个团队都需要规范,这可以使得团队的开发和维护成本极大的降低。为什么这么说?我依托“敏捷”这个现在很流行的思想来说吧。大家都知道敏捷开发中有结对编程和交叉测试这两项内容。那么我们怎么保证在结对的时候双方都能轻而易举的看懂对方的代码?在交叉测试,尤其是结对时所作的交叉白盒测试,怎么能迅速测出和指出对方代码中的问题?大家可以思考一下,在代码格式统一或多样书写风格下这项工作怎样展开?步骤都有哪些?成本如何?这里我不想多说,留给大家去思考。我相信有过经历的人会认同我,而那些非常自我的程序员也许会陷入自省或立即BS我。
另外,规范也会成为团队管理和项目管理的得力助手,我想管理过团队的人都会有体会的。我以前所在的团队,新人加入的第一项任务就是要阅读和理解规范,而后才是慢慢介入开发工作当中去。摸过ruby on rails开发的人都会有种感触,契约式开发要比配置型开发省心得多。团队管理也是如此。
其实我是想借助这个系列的文章引出一些大家日常工作中普遍存在的事项,将更多可思考的问题抛给大家。我觉得如果单写这么一个小小的FLV播放器的设计就太没意思了,我也几乎写不出那么纯的技术文章来。希望大多数人不是在读到此处之前就已经离开了。
下面说说FLV播放器的设计吧。在写这个播放器之前我也常常去youku之类的网站看视频,常常用他们的播放器。像我这种并不聪明的人做东西最开始就是需要去模仿。下面我来讲讲我模仿出来的基本功能设计:
1、Play、Pause、Stop这几个按钮肯定是大家用播放器最常用的。但是这几个按钮怎么去组合呢。想想看,在按Play按钮的时候大家是想去播放视频,在按Pause按钮的时候大家是想去暂停视频。这两个操作所反映出来的意图恰恰相反,所以这两个按钮可以坐在一起,设计成开关状态。而Stop按钮,可以在视频播放或暂停时将播放动作完全停止。所以这个单独的意图致使Stop按钮需要另置于它地。
2、进度滑块,这个功能会使播放器看上去更高级,大家用起来更方便,是必要的。进度滑块需要体现两个功能:一是要实时反映视频播放的进度;二是要响应用户的点击和拖动操作,改变视频播放进度。第一个功能用Flex非常容易实现。而第二个功能要注意在响应用户操作的同时怎样与第一个功能之间做出权衡。比如,在用户拖动滑块(点击、拖动、释放)和点击轨道(点击、滑块自行滑至点击处)的过程中,第一个功能需要做出怎样的让步才不会使滑块抖动甚至反复跳跃。另外还要注意,滑块操作与按钮状态显示之间的同步问题。
3、音量调节滑块和按钮,这个也是很必要的功能。值得一提的是音量调节滑块的初始值,这要让用户在刚开始观看视频的是否不至于感觉刺耳或者听不到声音。我这里所说的音量调节按钮是指静音按钮。当用户需要立即关闭声音的时候可以点击一次即完成操作,而不是用鼠标滑动滑块到一端。在用户需要再次听到声音的时候,滑块应该响应用户对静音按钮的点击而回到静音之前的位置上去(当然音量也同时回到静音之前)。这里是可以提高用户体验的。当然,这个功能也同时需要注意音量调节滑块和音量调节按钮之间的同步问题。
4、当前播放/总时间显示,也很能增强用户体验,非常必要。这个功能就不多说了,只要与视频的真实情况一直即可。格式方面,我发现我看到过的播放器大都以“当前播放时间/总时间”来表示的,故跟随之。要符合大众的口味嘛。
5、播放器的全屏与还原。在用户感觉视频窗口过小时,这个功能就很有必要了。要注意全屏之后播放器的组件布局是否依然合理。可以通过状态监听来根据全屏状态改变组件到最合适的位置。另外,可以暴露接口以至于能够用JS从外部设置播放器的宽度和高度,以适应网页的整体布局需要。
6、视频的加载和断开时间。这个不算是应用功能,但是也是需要注意的。在应用用户众多或者带宽有限的情况下,需要考虑视频在什么时候需要创建连接(因为FLV是流媒体嘛),什么时候需要真正加载,什么时候又需要立即断开连接以节约带宽。这些操作可以甩到Flash之外,用JS根据具体情况通过接口来操作,这样就会灵活得多。
以上这些就是做一个FLV播放器所需的基本功能,不知道大家是否已经了解了。当然一些高级功能大家也可以根据具体需要加入。比如:视频默认显示图片或动画(当前视频在加载时或用户播放前所呈现的“开胃菜”)、字幕独立加载和同步(这个相当高级,我这里也只是有想法而已),等等。大家有兴趣的话可以去探索。
我在这里强调一点,也是很多初级开发者容易忽略的地方。那就是,搞软件、做程序时刻要注重“用户体验”。软件是做出来让人用的,而不是自娱自乐的工具。代码只有创造了价值才可能称之为程序,否则也只能算是一堆字符的乱排。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息