浅谈Flex中直接获取某个组件的对象

开发 后端
有这样一个需求:假如你new了一百次Button,同时这些button的id分别赋值如btn1.id = "button1"; btn2.id = "button2";以此类推。当100个button建立后,我想直接对其第20个button进行操作,那么应该如何实现呢?本文将介绍如何在Flex直接获取某个组件的对象。

Flex中直接获取某个组件的对象方案1:

遍历这些button所在的容器的,然后通过getChildAt() 或者 getChildByName()这样的方式获取。
这是常规的做法,这种做法的弊端:每次都需要遍历100次button,显然效率很慢。

Flex中直接获取某个组件的对象方案2:

当建立新的button后,将这个button存放到哈希表里面,其键-值的设定关系:key = button.id; value = button;即键里面保存的button的id,而value里面保存的button对象。object[ 'button20' ] = btn20;

在使用的时候,直接取得第20个button的做法:var button : Button = object[ 'button' + 20 ];

这样做无疑要比***种方式快很多倍,但是这种做法的弊端:需要建立一个哈希表,当你的数据过多的时候,无疑这个哈希表将会很大。

Flex中直接获取某个组件的对象方案3:

我们***不需要遍历100次button容器,第二不需要建立一个哈希表。我们只是用this[xxxx]的方式,即可取出第20个button。

具体做法:var button : Button = this[ 'button' + 20 ];即可完成操作。无论这些button在什么地方?在什么样深度的容器里面,只要是它仍在这个project里面,就可以使用this[xxx]的方式取出。
无疑这种做法是高效的,其实我们仔细看一下this[xxx]其实也是使用哈希表的方式,只不过比方案2好在,我们不需要再建立一个哈希表,这样能节省很多的内存空间。

具体请看一下第三种方法的demo:

  1. <?xml version="1.0"?>    
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mx   
  3.  <mx:Script> 
  4.     <![CDATA[    
  5.     private var newFontStyle:String;    
  6.     private var newFontSize:int;    
  7.      
  8.     public function changeStyle( s : String ) : void {    
  9.         s = "button" + s;        
  10.         this[ s ].setStyle( "fontSize", 20 );    
  11.     }    
  12.     ]]> 
  13.     </mx:Script>     
  14.     <mx:Button id="button1" click="changeStyle('2')" label="Button 1" />    
  15.     <mx:Button id="button2" click="changeStyle('1')" label="Button 2" />     
  16. </mx:Application> 

【编辑推荐】

  1. Flex教程 Flex程序开发初步
  2. Flex垃圾回收和性能优化的一些总结
  3. Flex和Jsp之间中文参数的传递
  4. Flex编程中需要注意的Namespace用法
  5. 将Flex与Spring集成框架
责任编辑:彭凡 来源: cnblogs
相关推荐

2023-07-31 08:02:28

2020-10-12 09:46:34

漏洞

2011-04-19 13:10:11

MySQL储存图片

2011-05-16 13:40:13

MySQL储存图片

2009-08-20 10:12:59

Flex Alert组

2022-09-15 15:04:05

datamethods

2010-08-13 09:11:11

LabelFlex

2010-07-20 13:53:44

Perl引用

2010-04-19 08:51:30

2021-04-15 22:17:16

PythonExcel代码

2010-08-05 10:58:55

Flex组件

2010-08-04 14:44:33

Flex图表

2010-07-30 13:40:59

Flex开发

2009-06-25 13:03:48

JSF的UI组件

2010-08-12 13:34:13

Flex验证组件

2009-07-15 11:04:02

MyEclipse F

2010-08-13 09:21:12

FlexButton组件

2010-07-28 12:58:24

Flex DateCh

2009-09-22 13:41:10

直接使用Hiberna

2010-08-13 13:14:09

Flex图表
点赞
收藏

51CTO技术栈公众号