随着对ActionScript的深入和熟练,我发现Flash的安全沙盒实在太黑了;可能是因为Flash过于强调它是一种Web应用,为了Web安全,对运行环境做了许多限制。用Flash有许多事情干不了的,比如跨域限制,无法构造自定义Header,还有居然不支持鼠标右键,不能读取和保存本地文件,更别说连接Sqlite之类的数据库,这些都是很烦恼的问题。听说Flash 10有所改善,可是目前还是让我吃尽苦头。仅仅是无法构造Header里面的Referer,就扼杀了我一个计划... Referer是用来干什么的,相信某些人比我更清楚。我上面所说的不包括AIR,都是指浏览器Flash插件和本地的Flash播放器。
当然,很多年前就有人开始用Flash,所以要想摆脱这些麻烦也是解决方案的。方法有两个,第一是依靠SWFKit这样的打包程序,或者说是外壳来获得扩展接口;第二就是Adobe新秀AIR,顾名思义就是Application版的Flash,扩展了许多功能和接口。例如我上面提到的Referer限制,在AIR上面是不存在的,AIR就可以自由地构造Header。Adobe的官方文档也提到了,许多安全限制对AIR则是放行的。然而AIR的效率和内存占用不太理想,非常吃内存,这是一大缺点,另外就是要额外安装AIR的运行包,并且作品要接受AIR的管理,也是不小的障碍。
而关于SWFKit,它确实也提供了一些扩展方法,透明窗口、文件类、邮件、ftp、Socket、ActiveX、甚至是数据库,在我比较过的同类似的打包程序中它是最优秀最完善的。但是用多了你会发现这个东西实际上很难控制,尽管它也提供了一些类包帮助控制,但是还是会让人头晕,因为调试很不容易,对于系统API接口也缺少说明指引。大部分时间,浪费在调试和改错之中。
我承认ActionScript 3 这样的面向对象语言用来写程序很舒服,花费的力气比较小,可惜运行环境却不怎么样。AS3在图形和动画方面基本是无敌的,它还符合ECMA标准,与JavaScript和C#都有很深的血缘,光凭这两点还是挺有前途的,可是不太适合我的想法和需求,看来只能选用其他软件开发语言了。今天晚上偶然间看到Python,居然能大概看懂,应该是因为有PHP和AS3的基础吧,我估计学起来也不会费多少力气,同时这也表明了技术只是一种工具,知识都是相通的。后来又搜索了一些关于Python的资料,看起来它的特性似乎符合我的要求,并且据说Google也在大量使用Python,FaceBook也如此。也就是说学会Python又带来了能深入了解Google的机会^_^。现在Flash要先缓缓,也就意味着我的项目迟迟不能完成,郁闷。
