Fluid idea for Life

随笔,杂记

理解itemRenderer

本文系原创,转载时请表明出处。 使用Flex的组件时,大伙不可避免要和itemRenderer打交道。Flex组件中,支持自定义itemRenderer功能的组件不少,常见的有List,TileList,ComboBox,Tree,DataGrid等。这类组件具有一个共性:显示一组数据,并具备交互功能。 在使用这些组件时,我们只需要把数据按照一定的格式组织好,然后赋予给组件作为dataProvider,剩下的事就由组件来完成。处于需要,有时候我们需要个性化数据的显示方式,比如List组件,默认的itemRenderer是一个类似Label的元件,只显示每一条数据中的固定字段,如果想要显示更多信息,就必须自定义一个itemRenderer。

» 阅读全文

Tags: Flex, itemRenderer

Flex第一步技术论坛暂时无法访问

论坛<www.flex9.cn>所在的服务器近期正在搬迁,寻找新的托管商。

所以接下来的一段时间论坛无法访问。读者可以给我发邮件或在博客留言,谢谢大家支持!

AS3 资源散记

第一条:AS3 程序优化文档:来自joe的http://je2050.de/files/misc/as3opt.pdf 这份文档中提到的部分知识点在其它地方也有提及,我作了简单的翻译,如下:

1、 在循环语句中,使用int 比Number要好。比如: for (var i:Number = 0;i<100;i++){ // } 优化为: for (var i:int = 0;i<100;i++){ // } 2、 复杂对象要抽象为数据类型,尽量避免使用Object动态数据类型。 这个要慢: for (;i<n;i++) { var v: Object = new Object; v.x = 1; v.y = 2; v.z = 3; } 优化后的代码: class Vector3D { public var x: Number; public var y: Number; public var z: Number; } for (;i<n;i++) { var v: Vector3D = new Vector3D; v.x = 1; v.y = 2; v.z = 3; }

» 阅读全文

Tags: as3

北京行记

4.11晚上9点上了去北京的火车,4.17早上七点到武昌。

第一次到北京,下了火车,坐上出租车,司机一口的京腔,说话直接了当。

几天下来,天安门、故宫、长城、颐和园等地方去一遍,看遍皇宫别院,真有点审美疲劳了。故宫很大,八达岭很壮观,颐和园很大很皇家。看过就忘了,现在仔细想想,似乎没有什么特别印象深刻的地方。

早上4点半起床去看升旗仪式,天安门广场上人很多,国歌比平时听的要长。

印象摘记:北京人一般都很热情,街上一般都很干净,不过离天安门2条街的地方也有脏乱的场所。

四月的北京,漫天都是杨絮还是柳絮,整个城市无孔不入,像雪花一样。昼夜温差大,有点不习惯。

北京的交通一般,公交车坐的比较舒服。习惯了武汉公交的凶猛,在北京的公交车上,我容易犯困,那车开得实在有点平淡。

另外,北京也有黑的士,和黑的士司机。

详细情况可以访问春哥的 Blog:http://8jie.blogbus.com,内附大量照片。

从新开始

今天开始了新的工作方式,我想,生活也会随着改变。在过去的一段时间内,感觉自己的热情被慢慢消磨。作出改变是迟早的事,也是这么久的期待。

离开硕思,其实我并没有想得太多。激情和机会,也许都是一瞬间的闪现。 过分的谨慎,并不是件好事。

怀着一种新的心态,面对陈旧的琐事,心情还是有变化的。

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