有这样一个需求:假如你new了一百次Button,同时这些button的id分别赋值如btn1.id = "button1"; btn2.id = "button2";以此类推。当100个button建立后,我想直接对其第20个button进行操作,那么应该如何实现呢?本文将介绍如何在Flex直接获取某个组件的对象。
Flex中直接获取某个组件的对象方案1:
遍历这些button所在的容器,然后通过getElementAt()这样的方式获取。
这是常规的做法,这种做法的弊端:每次都需要遍历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:
所有的组件都会在document中,不用管父组件,直接用this肯定能取到,debug看一下this里的对象就知道了。
我们第一不需要遍历100次button容器,第二不需要建立一个哈希表。我们只是用this[xxxx]的方式,即可取出第20个button。
具体做法:
var button : Button = this[ 'button' + 20 ];即可完成操作。无论这些button在什么地方?在什么样深度的容器里面,只要是它仍在这个project里面,就可以使用this[xxx]的方式取出。
无疑这种做法是高效的,其实我们仔细看一下this[xxx]其实也是使用哈希表的方式,只不过比方案2好在,我们不需要再建立一个哈希表,这样能节省很多的内存空间。
具体请看一下第三种方法的demo:
<?xml version="1.0" encoding="utf-8"?>
<!-- @author shilei, corporation YD -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[
private var newFontStyle:String;
private var newFontSize:int;
public function changeStyle( s : String ) : void {
s = "button" + s;
this[ s ].setStyle( "fontSize", 20 );
}
]]>
</fx:Script>
<mx:Button id="button1" click="changeStyle('2')" label="Button 1" />
<mx:Button id="button2" click="changeStyle('1')" label="Button 2" />
</s:Application>
第三种方法的弊端是只能获取编译时创建的组件,不能获取运行时用代码动态创建的组件,这时候只能通过第一和第二种方法才可以获取组件对象。
From http://developer.51cto.com/art/200907/136258.htm
分享到:
相关推荐
根据给定的信息,本文将详细解释如何通过Flex访问Java对象,并提供一个具体示例来帮助理解整个过程。本文主要分为以下几个部分:环境搭建、Java类编写、配置文件编写、Flex应用编写以及最终运行效果。 ### 一、环境...
### Flex 加载Base64编码的二进制字符串图片 #### 概述 在Flex开发中,有时我们需要处理Base64编码的二进制数据,尤其是图像数据。Base64编码是一种常用的数据编码方式,可以将二进制数据转换为文本格式以便在网络...
`getParams()`通过`ExternalInterface.call()`获取查询字符串,并将其分解为参数对,存储在`params`对象中。然后,这些参数值会被显示在`dispID`文本组件上。 总的来说,要从HTML容器传递的URL参数值到Flex应用,你...
在Flex中,你可以使用XML类的构造函数来创建新的XML对象,或者解析已经存在的XML字符串或文件。 在"flex解析xml框架实例"中,我们关注的是如何使用XML类解析从HTTPService获取的数据。HTTPService是Flex提供的一个...
根据提供的文件信息,本文将对“Flex Tree 源码”进行详细解析,重点解读如何通过 Flex、Java 和 Tree 代码结合 XMLList 来生成 XML 文件,并构建树形数据结构。 ### 一、理解 Flex、Java 和 Tree 代码 #### 1.1 ...
URLVariables类是Flex中用于将变量序列化为URL查询字符串的工具。这种方法适用于GET和POST请求,但通常在POST请求中更为常见,因为它可以处理更复杂的数据结构。以下是如何使用URLVariables传递参数的步骤: 1. **...
- 使用`ConfigurationManager.AppSettings["ConnectionString"]`获取数据库连接字符串,确保应用程序能正确连接到数据库。 2. **数据库查询**: - 建立数据库连接:`SqlConnection conn = new SqlConnection(str)...
因此,基本类型的转换通常是自动的,但复杂对象(如自定义类实例)可能需要序列化为JSON字符串进行传递。 在实际项目中,`FlexJs调用`可能涉及到的问题包括跨域安全、参数验证、错误处理等。确保正确设置Flash ...
在.NET和Flex之间的数据交互,我们可以使用各种数据类型,例如字符串、对象、DataTable、List, ArrayList等。下面以两个示例来说明: 1. 返回对象: 在.NET中,我们可以创建一个Web方法(WebMethod),如`...
在这个例子中,`testFunc`接受一个字符串参数并显示一个警告对话框。同时,我们需要在Flex应用中引入`FABridge`组件,它提供了JavaScript与Flex交互的接口。 ```xml *" /> ``` 在JavaScript端,可以通过创建一...
数据源可以是数组、XML列表、数据集等,过滤方法通常包括字符串匹配、正则表达式匹配等。过滤后的结果再更新到视图,如List、DataGrid或其他显示组件上,实时展示匹配的项。 具体步骤如下: 1. **创建Input组件**...
2. 掌握MXML和ActionScript的语法,包括基本控件、集合对象和字符串操作。 3. 应用动态效果,如移动、旋转和放大,以及创建自定义效果。 4. 使用定时器和事件处理,包括鼠标和键盘事件,编写交互式应用。 5. 了解...
通过调用此方法,我们可以将指定的字符串复制到系统的剪贴板上,从而使得用户可以在其他应用中粘贴这些信息。例如: ```as System.setClipboard("这是一个示例文本"); ``` 这行代码会将“这是一个示例文本”复制到...
5. **ActionScript的国际化**:在ActionScript代码中,可以通过`ResourceBundle.getBundle()`方法获取资源包,然后使用`getString()`方法获取对应的字符串。 6. **事件监听和处理**:在用户改变语言设置时,可能...
- 对于`Line`,根据起始和结束ID从`nodeMap`中获取相应的`BaseNodeContainer`实例,创建`TopoLine`对象,并添加到容器中。 4. `mx:Topo` 是一个自定义组件,它的`creationComplete`属性绑定到`complete()`函数,...
1. **解析JSON**:Flex使用`flash.utils.parseJSON()`函数将JSON字符串转换为ActionScript对象,便于操作。例如,`var jsonData:Object = flash.utils.parseJSON(jsonString);` 2. **展示JSON数据**:与XML类似,`...
1. **XML类**:创建XML对象可以通过XML构造函数,直接传入XML字符串或者文件URL。例如,假设我们有一个名为"data.xml"的文件,内容如下: ```xml <book id="1"> <title>Book1 <author>Author1 <book id="2">...
6. **使用示例**: 创建一个Flex应用时,你可能需要在MXML或ActionScript文件中创建一个`FusionCharts`对象,设置`chartId`、`width`、`height`属性,以及数据XML或JSON字符串。接着,使用`loadChart()`方法加载SWF并...
通常,这种组件会显示一串随机字符,用户需要在指定时间内正确输入以完成验证过程。 要创建这样一个组件,我们首先需要确保环境配置正确。你需要安装 Node.js 和 Vue CLI(命令行工具),通过运行以下命令: ```...
例如,在Flex中对字符串进行编码和解码时可以使用如下方法: - **编码**: - `private function htmlParaEncoding(para:String):String{` - `return encodeURIComponent(para);` - `}` - **解码**: - `private...