加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:22:21 所属栏目:百科 来源:网络整理
导读:本文转自 ??浅谈Flex中直接获取某个组件的对象 Flex中直接获取某个组件的对象方案1: 遍历这些button所在的容器的,然后通过getChildAt() 或者 getChildByName()这样的方式获

本文转自 ??浅谈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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读