详细请看:http://www.k-zone.cn/zblog/post/flex-get-a-reference-to-object.html
有这样一个需求:假如你new了一百次Button,同时这些button的id分别赋值如btn1.id = "button1"; btn2.id = "button2";以此类推。
当100个button建立后,我想直接对其第20个button进行操作,那么应该如何实现呢?
方案1:
遍历这些button所在的容器的,然后通过getChildAt() 或者 getChildByName()这样的方式获取。
这是常规的做法,这种做法的弊端:每次都需要遍历100次button,显然效率很慢。
方案2:
当建立新的button后,将这个button存放到哈希表里面,其键-值的设定关系:key = button.id; value = button;
即键里面保存的button的id,而value里面保存的button对象。object[ 'button20' ] = btn20;
在使用的时候,直接取得第20个button的做法:var button : Button = object[ 'button' + 20 ];
这样做无疑要比第一种方式快很多倍,但是这种做法的弊端:需要建立一个哈希表,当你的数据过多的时候,无疑这个哈希表将会很大。
方案3:
我们第一不需要遍历100次button容器,第二不需要建立一个哈希表。我们只是用this[xxxx]的方式,即可取出第20个button。
具体做法:var button : Button = this[ 'button' + 20 ];即可完成操作。无论这些button在什么地方?在什么样深度的容器里面,只要是它仍在这个project里面,就可以使用this[xxx]的方式取出。
无疑这种做法是高效的,其实我们仔细看一下this[xxx]其实也是使用哈希表的方式,只不过比方案2好在,我们不需要再建立一个哈希表,这样能节省很多的内存空间。
具体请看一下第三种方法的demo:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mx
<mx:Script>
<![CDATA[
private var newFontStyle:String;
private var newFontSize:int;
public function changeStyle( s : String ) : void {
s = "button" + s;
this[ s ].setStyle( "fontSize", 20 );
}
]]>
</mx:Script>
<mx:Button id="button1" click="changeStyle('2')" label="Button 1" />
<mx:Button id="button2" click="changeStyle('1')" label="Button 2" />
</mx:Application>
分享到:
相关推荐
Flex 组件Flex 组件Flex 组件Flex 组件Flex 组件
Flex 4 高级编程Flex 4 高级编程Flex 4 高级编程Flex 4 高级编程
《Adobe Flex 3 高级编程》官网源码 第28章有619兆而没有上传
Flex拖拽编程详解,Flex拖动方法。
这个是我一直在用的针对于组件全屏的一个类,这里是页面上的某个组件全屏,而不是整个页面全屏。 这是原始的库了,里面少了一个针对按下ESC键的处理,这个在使用的时候可以自己加,另外一个问题就是由于这个库是FLEX...
一些flex组件的用法! flex组件用法。 自定义控件
Flex白皮书 Flex cookbok Flex编程指南 Flex设计模式等
flex组件之DataGrid高级用法实例源码
Adobe Flex 3 高级编程 源码
Flex布局之关于组件的大小 Flex布局之关于组件的大小
flex+socket编程实例,提供源码参考,请查看
Flex3组件介绍,包含flex3的所有组件介绍并有例子
Flex教程系列之(四) AS3语法——面对对象编程 http://download.csdn.net/source/1161879 Flex教程系列之(五) AS3语法——静态常量继承和接口 http://download.csdn.net/source/1161921 Flex教程系列之(六) AS3...
flex组件的详细介绍,对每一个组件都有示例代码,即看即用,并附有所有组件效果图。
flex做拓扑图的组件flex做拓扑图的组件flex做拓扑图的组件
flex 经常用法flex 经常用法flex 经常用法flex 经常用法flex 经常用法
几经尝试发现是由于Flex控件在旋转后中文就不显示了,因此做了相应修改以支持中文,并添加了一些删除,增加子组件的方法,以方便编程式的使用。当然如果熟悉了Flex组件的生命周期,可以根据需求增添功能。 对于中文...
很通用的Flex 分页组件,经过本人测试,可以应用到项目中,很方便
详解Flex4的系统组件与基本组件。让你在应用的时候知道用什么.
研究Flex 组件声明周期,了解组件的生成步骤