博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Flex]Flex编程注意之直接获取某个组件的对象(this[]用法)
阅读量:4167 次
发布时间:2019-05-26

本文共 1193 字,大约阅读时间需要 3 分钟。

有这样一个需求:假如你new了一百次Button,同时这些button的id分别赋值如btn1.id = "button1"; btn2.id = "button2";以此类推。

当100个button建立后,我想直接对其第20个button进行操作,那么应该如何实现呢?
方案1:
遍历这些button所在的容器的,然后通过() 或者 ()这样的方式获取。
这是常规的做法,这种做法的弊端:每次都需要遍历100次button,显然效率很慢。
方案2:
当建立新的button后,将这个button存放到里面,其键-值的设定关系:key = button.id; value = button;
即键里面保存的button的id,而value里面保存的button对象。[ 'button20' ] = btn20;
在使用的时候,直接取得第20个button的做法:var button : Button = [ 'button' + 20 ];
这样做无疑要比第一种方式快很多倍,但是这种做法的弊端:需要建立一个,当你的数据过多的时候,无疑这个将会很大。
方案3:
我们第一不需要遍历100次button容器,第二不需要建立一个。我们只是用[xxxx]的方式,即可取出第20个button。
具体做法:var button : Button = [ 'button' + 20 ];即可完成操作。无论这些button在什么地方?在什么样深度的容器里面,只要是它仍在这个project里面,就可以使用[xxx]的方式取出。
无疑这种做法是高效的,其实我们仔细看一下[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>

转载地址:http://dxgxi.baihongyu.com/

你可能感兴趣的文章
java 反编译问题
查看>>
return 与 exit()的区别
查看>>
fflush(stdin);的作用
查看>>
欢迎使用CSDN-markdown
查看>>
python3 文件合并
查看>>
python3 字典遍历操作
查看>>
python 统计词频
查看>>
使用python字典合并文本
查看>>
python字典update()方法
查看>>
python format()方法
查看>>
python自顶向下的设计方法进行体育竞技分析
查看>>
python自底向上的执行单元测试
查看>>
软件开发方法基础
查看>>
python面向过程程序设计
查看>>
python绘制铅球的运行轨迹
查看>>
python面向对象程序设计
查看>>
python通过面向对象程序设计方法 实现铅球运行轨迹的计算
查看>>
python面向对象的3个特点
查看>>
python条件语句嵌套
查看>>
python range()和xrange()
查看>>