[转载]【转】基于Flash的软件开发


[转载]【转】基于Flash的软件开发
2011年11月10日
   基于Flash的软件开发
  这里所提及的Flash技术,包括Adobe的Flash Player以及AIR。基于Flash的软件开发,涉及的人比较少――更多的人或许认为Flash更适合做在线产品,比如Media Player、Data Show等等。其实做软件开发也是一样,只要Flash适合你的产品,为何不抛开传统的开发理念而采用Flash呢?
   为什么要基于Flash做软件开发本文根据自己开发维护DoSWF(详细信息请查看:http://www.doswf.org)的经验,对基于Flash的软件开发,做一个全面的解剖。 强大UI处理、交互设计功能:借助于Flash IDE以及Flex Builder,可以让你的软件的UI展现、用户体验完成得非常出色。
  跨平台:Adobe已经为跨平台做了很多工作了,包括Flash Player以及AIR的部署。这让你的软件更便捷的做跨平台分发。
  Online和Client完美结合:传统的软件开发模式,更多的是面向客户端,如果要和在线端结合的话,还得重新做在线版(浏览器插件之类)。而基于Flash开发则完全可以将Online版本发布为Flash Player平台,而Client版本发布为AIR平台,将二者完美结合。
  丰富的第三方产品支持:很多时候你会发现,Flash几乎能完成你的软件所有的功能,但是就是有一个关键的功能实现不了,比如调节系统音量功能――AIR也不能实现!这个时候,你就得善用Flash的第三方产品。最常见的就是Flash打包工具了。很多打包工具提供了很全面的系统级别接口供flash来调用。比如ZINC,Flash Packer,都是非常不错的打包工具。借助于这些优秀的第三方产品,你可以将Flash技术应用到一个更高的境界。
   Flash能做什么
  和传统的软件开发技术不一样的是,相对来说Flash能做的实在是太少了。Flash从一开始就依附于浏览器,就注定它要在安全方面如履薄冰。从最简单的Actionscript 1.0,到Actionscript 2.0,再到目前相对比较强大的Actionscript 3.0,虽然说目前用Flash我们能做越来越多的事了,但因为安全问题,Flash仍然有很多事不能做。就算是Adobe后来推出的AIR技术,也无法完全跨越安全的限制。
  所以在你确定要使用Flash技术进行软件开发前,你必须要知道Flash什么不能做,什么能做。这样你才能知道Flash技术是否适合在你的产品上使用。比如你要开发一个杀毒软件,Flash能做吗?显然不能。但是如果你要开发一个RSS订阅器,这个完全则可以实现。所以,如果有必要,请事先咨询一些Flash开发人员,他们更清楚Flash的优势和劣势,更清楚你的产品是否适合使用Flash技术。 怎样基于Flash开发软件
   产品架构
  既然我们使用Flash来开发我们的软件,那么我们在架构产品时就应该更多的让Flash来发挥它的优势:跨平台性,以及Online Application和Client完美结合。这里看一下DoSWF设计初的产品架构:
  
  产品分三条主线分发: 借助于浏览器,通过Flash Player的跨平台特性以及其高安装率分发软件的在线版本。
  通过打包工具,将软件打包成客户端程序。选择不同的打包工具会有不同的目标平台。这里仅打包Windows平台可执行程序。
  借助于Adobe AIR的跨平台性,将软件发布AIR版本,实现客户端的跨平台。
  不难看出,基于Flash的软件开发,在跨平台上的分发上,比传统的软件开发方式就存在很大优势。更特别的是借助于浏览器,以及Flash Player的高安装率,可以通过发布在线版本(如果功能上可以的话,比如你的软件是一个聊天软件),让你的产品更快更便捷地呈现给用户,服务于用户。 功能开发
  Adobe Flash系列产品,包括Flash IDE, Flex, Flex Builder, Flash Player, AIR。借助于这些优秀的软件,你可以很方便很快捷地进行功能开发。 1.环境编译
  很多时候你的软件要发布成不同的版本,比如一个用于在线发布,一个用于打包成exe发布,而另一个用于发布成AIR程序。每个版本所对应的接口是完全不一样的。你不可能每个版本都开发一次吧? 抑或是将软件模型提取出来,接口调用再各写一份?这样能解决问题,但是在后期的版本维护中,你会发现版本非常混乱。
  最好的解决方案就是使用环境编译(详细信息请查看官方帮助)。它容许你在编译时有条件的选择相应的代码编译。比如:
  
   2.换肤以及多语言
  Flash生来就是做UI的,这是C、Java等传统软件开发模式所不能比拟的。特别是借助于Flex Framework,里面内置了很丰富的组件,使开发人员完全可以从UI处理中脱离出来,进而更关注软件的核心实现。通过Flex Framework,可以很方便的完成换肤以及多语言支持。
  在我看来,开发Web游戏,或在线应用,是否使用Flex Framework确实需要很好的斟酌一下。但是如果是进行软件开发,完全可以尝试一下――你不需要考虑它的体积(几百KB而已),也不需要考虑它的效率(比起你程序核心的消耗,它将会是很低的)。当然了,如果你的程序有发布在线版本的计划,如果在浏览器中运行效果不是很尽如人意,可以考虑将在线版本发布成一个Demo版本。 3.自动升级
  这个是软件开发必须面对的一个问题。Adobe AIR目前的版本已经集成了自动升级模块。如果你的程序发布成AIR版本的话,可以很方便地完成自动升级的开发。但是发布成另外的版本,比如Windows的exe版本,就得自己去架构自动升级模块了。需要说明的是,最好是复用AIR升级模块的xml文件格式,不然维护这个升级文件会很复杂。 商业应用
  这个是所有商业软件需要面对的一个问题。最最基本的模式就是出售授权来获取商业利益;如果再高级一点,就是提供商业性质的服务――比如顾问、软件定制等等。这些都不是重点,而且我确实没有深入研究。但是当你的软件发展到一定阶段的时候,我个人认为有一个东西就应该考虑了:产品系列化。
  像DoSWF,之前只有一个Professional版本,慢慢我发现很多人只用里面最最核心的几个功能,其他功能他们根本用不着,而且也不知道怎么用――并不是每个人都很熟悉你软件所涉及的领域。于是后来我把DoSWF里面最核心的功能提取出来,发布了DoSWF MINI版本,这样用户完全从DoSWF Professional“混乱”的功能中脱离出来,而且费用更低。再到后来,我发现DoSWF不能满足用户针对项目的需求,于是又有了FPE(Flash Project Encrypter)。这就是产品的系列化。
  在软件一开始你可能会对整个产品用户有一个很准确地把控。但是实践会告诉你,你的用户远远超出你的想象。所以,产品的系列化是产品发展中一个很重要的环节,同时也意味着你要去做数据统计、分析,然后重新审视你的用户群体。这些就不只是针对基于Flash软件开发而言了。补充一点,如果你的程序发布成AIR版本后,可以将软件发布到Adobe的AIR Market。 总结
  做软件即做产品,是一个很深很广的领域,这里只是对基于Flash的软件开发做一个抛砖引玉。很多产品,换一种思维,换一种方式,突破传统的束缚,你会有一个更新更广的天地。

猜你喜欢

转载自jbxsr87r.iteye.com/blog/1571840