`

直接获取某个组件的对象

    博客分类:
  • Flex
阅读更多

假如你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好在,我们不需要再建立一个哈希表 ,这样能节省很多的内存空间。

<?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>
 
0
0
分享到:
评论
1 楼 nianshi 2010-12-08  
这个方法不错

相关推荐

    组件对象模型 学习笔记

    ProgID 和 CLSID 是两个重要的标识符,可以用来标识某个组件。注册是 COM 组件的一部分,可以将组件注册到系统中,以便其他应用程序可以使用。COM 库函数提供了一些基本的函数来实现组件的创建和管理。

    Ext获取对象

    如果知道一个对象存在于某个容器中,可以通过容器的`query`或`down`方法查找子对象。`query`返回匹配CSS选择器的所有子组件,而`down`返回第一个匹配的子组件。例如,`var item = container.down('#itemId')`会查找...

    EXT GridPanel获取某一单元格的值

    而`record.data.rowName`直接访问Record的内部数据对象,如果字段不存在,可能会导致意外的错误。 总结来说,EXT GridPanel通过监听`cellclick`事件可以获取用户点击的单元格的值。同时,结合选择模型,我们可以...

    com 技术内幕 -- 微软组件对象模型(inside COM.pdf

    根据提供的信息,“com技术内幕 -- 微软组件对象模型(inside COM.pdf)”这份文档主要聚焦于微软的组件对象模型(COM)技术。接下来,我们将详细探讨COM的基本概念、原理及其实现方式,以便更好地理解这一重要的软件...

    获取组件坐标

    在Android开发中,获取组件坐标是一项基础且重要的任务,它...在布局动态调整中,可能需要获取某个控件的精确位置来决定其他控件的相对位置。因此,理解并熟练运用获取组件坐标的方法,是Android开发者必备的技能之一。

    java调用com组件实例

    JACOB是一个Java库,它允许Java程序直接调用COM组件,无需通过JNI编写本地代码。JACOB的核心是通过动态链接库(DLL)与COM组件交互,从而简化了Java与COM之间的通信。 **二、JACOB的使用步骤** 1. **引入JACOB库**...

    爷孙组件直接消息传递-$attrs

    当一个组件没有声明某个prop时,Vue会将这些属性放入`$attrs`对象中,并自动绑定到组件的根元素上。这意味着,如果我们想将属性从爷爷组件传递到孙子组件,可以通过中间的子组件,利用`v-bind="$attrs"`将未声明的...

    易语言复制标记组件

    2. **组件对象的创建**:在代码中,你需要创建组件对象,以便在运行时使用。这涉及对易语言中的“创建对象”命令的理解和应用。 3. **事件驱动编程**:易语言采用事件驱动的方式,当用户触发某个操作(如点击复制...

    GDI对象查看工具(排查GDI对象泄露)GDIView.zip

    GDI,全称为Graphics Device Interface,是Windows操作系统中的一个核心组件,它为应用程序提供图形设备接口,以便在屏幕上绘制图像、处理字体和图形等。GDI对象是GDI系统中的基本元素,包括位图、画刷、字体、Pen等...

    易语言412寻找组件命令示例很简单个例子

    在这个例子中,子程序可能是用来处理用户操作或者根据特定条件查找界面中的某个组件。具体的实现可能包括以下步骤: 1. **声明变量**:首先,我们需要声明一个变量来保存找到的组件对象,如果没有找到匹配的组件,...

    C#动态创建组件

    2. **使用Assembly.Load()和Assembly.CreateInstance()**:当你知道组件存在于某个特定的DLL中时,可以先加载该DLL,然后创建组件实例。 ```csharp Assembly assembly = Assembly.LoadFrom("path_to_dll"); ...

    在Vue中获取组件声明时的name属性方法

    如果错误描述本身也是动态的,比如来自某个变量,我们可以直接将变量传入`catchError`函数。 总的来说,通过在Vue组件内部使用`this.$options.name`,我们可以轻松地获取到组件的`name`属性,从而在处理错误或进行...

    微信小程序日历组件(可多选单选)

    在日历组件中,JS负责处理用户的交互事件,如点击日期、选择范围等,同时处理逻辑,如判断是否已选择某个日期、更新数据状态等。JS代码通常包含在组件的`&lt;script&gt;`标签内,通过`Page`或`Component`对象定义页面或...

    Angular组件动态加载示例.zip

    动态加载组件是一项高级特性,它允许我们在运行时根据需要创建和插入新的组件到DOM(文档对象模型)中,而不是在应用启动时就预先定义好所有的组件。这个"Angular组件动态加载示例程序"可能包含了一个演示如何实现这...

    vue3+ElementPlus cron组件

    5. **API接口**:提供与Vue3兼容的API,以便在组件中获取或设置cron值,方便与其他组件或服务进行交互。 6. **事件监听**:可能有change、submit等事件,方便监听并响应用户操作。 使用Vue3 + ElementPlus Cron组件...

    金蝶EAS开发中根据单据id获取实体名的方法

    BOS是金蝶EAS的核心组件之一,它提供了对企业业务对象的管理服务,包括对象的创建、查询、更新和删除等操作。在BOS中,每个业务对象都有一个唯一的ID,即BOSUuid,这个ID可以用来识别和定位特定的单据或实体。 以下...

    asp无组件上传程序

    2. **使用Request对象**:在ASP中,我们可以通过`Request.Form("字段名")`获取POST请求的数据,对于文件,我们可以获取到的是文件的二进制数据。需要注意的是,文件数据是以多部分/边界的形式提交的,因此需要解析这...

    易语言调用com接口获取信息源码

    在本案例中,"易语言调用com接口获取信息源码",意味着我们有易语言编写的代码,用于通过COM接口从某个外部组件或系统中获取数据。 首先,我们需要理解COM的基本概念。COM是一种规范,定义了二进制兼容性,使得不同...

    注册com组件

    COM(Component Object Model)是微软提出的一种组件对象模型,它是一种接口标准,允许不同软件组件之间进行交互。在Windows操作系统中,COM组件是可重用的软件模块,它们以二进制形式存在,通常为.DLL或.EXE文件。...

    获得任何React组件的位置和大小的属性

    在React开发中,有时我们需要获取某个组件在页面中的位置和大小信息,这通常是出于交互设计、自适应布局或者拖拽功能的需求。React本身并不提供直接获取组件尺寸和位置的方法,但我们可以借助一些辅助库和JavaScript...

Global site tag (gtag.js) - Google Analytics