Fluid idea for Life

随笔,杂记

Flex程序开发心得小结

和Flash的开发环境相比,Flex提供的组件库确实很诱人,但由于功能太全面,导致程序的体积大,有时候使用不当,可能会影响程序运行效率。

在Flex的帮助手册中,有一个专门的章节讲了程序的优化,下面是我结合帮助作的几点小结:

1、避免容器的多级嵌套,减少相对尺寸、相对定位的使用。 在使用百分比来给容器内的元件定尺寸,一旦容器中的任何一个元件的位置和尺寸变化,都会引发容器对所有子级的重定位动作。如果嵌套的级别很深,这个计算量会很大。

2、尽量使用轻量级的容器 Canvas是体积最小的容器,它只支持绝对定位。很多时候,都可以使用它来代替HBOx和VBox。另外,Canvas也是我们编写自定义容器性质组件的一个首选。它具有容器的基本功能,利于扩展。

3、避免使用大体积的组件,比如DataGrid、AdvancedDataGrid 大个子组件的功能强大,但开销也是非常大的。由于功能的复杂性,使得皮肤、样式、itemRenderer的实现都格外复杂。

4、处理数据时多用分页的方式 在使用数据类型控件时,尽量减少数据一次的显示量。比如TileList(更正:应该是Tile,TileList相反),它会把数据一次性全部创建,不管是不是需要显示,这样很浪费资源。ViewStack 、TabNavigator等在处理元件时,并不是一次创建,只要元件在第一次被显示时才创建,这样,就避免的不必要的开销。

5、setStyle和styleName Flex 组件的皮肤都是可视化元件,组件在自身初始化时,会使用当前的样式比如styleName完成所有皮肤元件的绘制。 如果我们在运行期间通过setStyle修改了组件的样式,组件的尺寸、位置就会作相应调整。联系到第一条,如果组件位于一个层级很深的容器中,也会有一个大的计算量。

Tags: Flex

搜索引擎的必要性

话说好几月前,厨房的下水道堵了。我们现在租的这个房子,只有厨房里有一个水池好用,平时刷牙、洗菜(虽然一个星期也就做一两次饭)都在这里了。偶尔春哥的妈妈来了,才天天做饭。水池的出口处没有过滤装置,很容易就堵上了,有时用铁丝疏通下,一般都能解决问题,但是那次很严重,在水管的转角处后面堵了,怎么也疏通不了。

可以想象,这给我们的生活带来多大不便,严重影响到生活,总觉得很不舒服。于是按照门上的修理广告,打了个电话,叫了一个修理工人来。结果那位大叔来了之后,仅用了半分钟不到的时间就解决问题了,当然,他用的是相当专业的工具。就一下,花费了25元。当时我都有改行的冲动,心想只要一天能接上十几个这样的活,这比我现在每天写程序要强多了。

事后,谨记教训,每每洗菜,都提醒自己要小心。

大约十天前,春哥的妈妈又来武汉,照样每天大鱼大肉。临走前的一天,非常不幸地,水池又堵上了。这次我想尽了一切办法,把所学的物理和化学知识都用上了,用热水浇,用洗衣粉和肥皂水泡,等等,总之都没用。

此时是无能无何也不愿意再叫修理工了,万般无奈,带着一点侥幸的心理,我Google了”下水道堵塞怎么办“,OMG,还真的有很多人搜索同样的问题,而且在baidu知道、Yahoo知识堂等都有解决办法,有人居然说放条泥鳅进去,就可以。真是天才!!!看这里:http://zhidao.baidu.com/question/45379700.html?fr=qrl ,上面提到的”家用钢丝螺旋疏通器“给了我启示。

今天一早,我就出门到附近的五金店,居然真的有“家用钢丝螺旋疏通器”。事不宜迟,回来后,使用这个专业的家伙,很顺利的解决了困扰多时的问题。相当有成就感啊。

从这件小事我得到的一个经验就是:遇到不懂的问题,Google或Baidu。万能的搜索引擎,万能的网络。

以后,我是不是可以在个人简历中加一条技能:善于疏通下水道,有专业水准。哈哈

RIA集散地 ( 〈flex第一步〉技术支持论坛)开张

http://www.flex9.cn

欢迎大家来交流!

通过http://www.fluidea.cn可以继续访问 〈flex第一步〉的有关信息

Air程序 - Flash decompiler

flash-decompiler是一个开源项目,使用Air + flex开发的SWF反编译器。

地址是:http://code.google.com/p/flash-decompiler/

有兴趣可以下载源码试玩下。目前能够解析出SWF文件(支持flash player9)的头信息,标签和 class名等,还在开发中。

另外,程序使用了Cairngorm框架,值得学习。

在flex中嵌入任意类型文件

Adobe的cookbook又改版了。上去看到一篇文章,很实用:http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&postid=8046&loc=en_US&productid=2

一般我们使用[Embed] 元数据标签在Flex程序中嵌入图片、SWF文件等,事实上,可以用来嵌入任意类型文件,加上 mimeType="application/octet-stream"就可以了。

上文中嵌入了一个xml文件,并使用二进制方式读取,很有意思。

Tags: Flex

《Flex第一步》错误汇总更新 — 内容补充

flex第一步》第一版中,有些地方细节上缺乏关键补充,特更正如下(第二次印刷时已经加上):

» 阅读全文

Tags: flex第一步

《Flex第一步》错误汇总更新 -- 错误更正

在第二次印刷时,修正了第一版的诸多错误,补充了一些遗漏的说明,内容如下:

1. P22,最后一行,将“source/Chapter_2修改为“源文件/Chapter_2

2. P33,页面中部,原文“这等同于下面的ActionScript代码:<mx:Script>….</mx:Script>”,修改并添加为:

这等同于下面的ActionScript代码:

<mx:Script>

   <![CDATA[ //注意这里在数组定义语句上添加了一个标记符号[Bindable]

[Bindable]

public var array_data:Array=new Array("Flex developer","Flash developer","Web developer","Mobile developer");

   ]]>

</mx:Script>

其中的变量名和上面MXML代码中Array标签的id属性值相同。

这里添加的“[Bindable]”是元数据标签。元数据标签是一种特殊的标签,它只能在ActionScript中使用,通过约定的特殊标记,告诉编译器如何编译程序,也就是如何生成SWF文件。元数据标签都是以封闭的中括号来表现,后面遇到的“[Embed]”、“[Event]”等也都属于元数据标签。

[Bindable]标签用来定义数据绑定的数据源,有关数据绑定的知识请参阅第9章。元数据语句作用于 ActionScript 文件的下一行,比如这里的“[Bindable]”作用于下一行的array_data数组,使得这个数组可以用于数据绑定。

之所以要添加这一个标签,是因为使用<mx:Array>标签定义数组时,编译器已经自动完成了这些工作。

用标签创建的数组和其他………………

» 阅读全文

Tags: flex第一步

也许程序员就是这样疯掉的

贴一个老故事: --------------------------------------------------------------------- 一九四五年的一天,克力富兰的孤儿院里出现了一个神秘的女婴,没有人知道她的父母是谁。 她孤独地长大,没有任何人与她来往。 直到一九六三年的一天,她莫明其妙地爱上了一个流浪汉,情况才变得好起来。可是好景不长,不幸事件一个接一个的发生。 首先,当她发现自己怀上了流浪汉的小孩时,流浪汉却突然失踪了。其次,她在医院生小孩时,医生发现她是双性人,也就是说她同时具有男女性器官。为了挽救她的生命,医院给她做了变性手术,她变成了他。最不幸的是,她刚刚生下的小女孩又被一个神秘的人给绑走了。 这一连串的打击使他从此一蹶不振,最后流落到街头变成了一个无家可归的流浪汉。直到一九七八年的一天,他醉熏熏地走进了一个小酒吧,把他一身不幸的遭遇告诉了一个比他年长的酒吧伙计。酒吧伙计很同情他,主动提出帮他找到那个使‘他’怀孕而又失踪的流浪汉。唯一的条件是他必须参加伙计他们的‘时间旅行特种部队 ’。

» 阅读全文

ActionScript 3 语言规范 chm

ActionScript 3的语言规范在adobe的站点上很早就发布了,地址是:http://livedocs.adobe.com/specs/actionscript/3

不过,一直没有下载版本,为了方便,我抓了包,做成了chm,方便查看。在学习ActionScript3时,看看这个还是很有帮助的。

有需要的朋友点此处下载

Tags: ActionScript

Flex and Java – A perfect technological marriage

Flex and Java – A perfect technological marriage,这个标题是引自Adobe flex开发社区的一篇同名文章:Flex and Java – A perfect technological marriage。

看后,联系起来,发现自己最近的很多工作,都和Java有密切的联系。看来Web应用中,Java坐着第一把交椅!

前不久,沉寂已久的Red5发布了0.7,安装后发现Bug似乎更多,相当不稳定,邮件列表中有人说0.7.1才会好点。对于这个开源的服务器,我又爱又恨,爱的是它免费而且功能挺强大,恨的是不够稳定,文档不完整,开发周期拉的太长,不知道啥时候才能出一个release版本。

习惯了red5,再去看fms,觉得很不适应,真心希望fms早日换上as3,这样,就万事大吉了。

前段时间和Flex3一道发布的BlaedDS,一个集成了Remoting和Message服务的Java版开源服务器端程序。相关文章:Getting started with BlazeDSUsing BlazeDS with Spring

还有另一个开源的http://www.graniteds.org/

前段时间,整理《Flex第一步》的错误,集合起来,数目不少,很惭愧,也很道歉,同时很感谢各位朋友给我指出的种种不足,我从中获益非浅。