通常Flex与外部数据传递时采用XML/XMLList的方式,而内部数据传输大多采用Array或ArrayCollection的方式。
常用的Array类型通常是:一维数组、二维数组和联合数组等。
ArrayCollection是对Array的包装。包装之后,数据会具有更丰富的数据处理能里。我转的教程说的挺详细,可以看看。
通常的做法是先定义Array,然后将其包装成ArrayCollection。
一、定义Array
1、用AS定义
var arr:Array = new Array("宝马","奔驰","奥迪","面包");
var arr2:Array = ["宝马","奔驰","奥迪","面包"];
var arr3:Array = new Array(
{name:"宝马",type:"汽车"},
{name:"奔驰",type:"汽车"},
{name:"奥迪",type:"汽车"},
{name:"面包",type:"食物"}
);
2、用标签定义
<mx:Array id="arr">
<mx:String>宝马</mx:String>
<mx:String>奔驰</mx:String>
<mx:String>奥迪</mx:String>
<mx:String>面包</mx:String>
</mx:Array>
2、定义ArrayCollection
现定义Array再包装
var arr:Array = new Array(
{name:"宝马",type:"汽车"},
{name:"奔驰",type:"汽车"},
{name:"奥迪",type:"汽车"},
{name:"面包",type:"食物"}
);
var arrc:ArrayCollection = new ArrayCollection(arr);
或者直接定义:
var arrc:ArrayCollection = new ArrayCollection([
{name:"宝马",type:"汽车"},
{name:"奔驰",type:"汽车"},
{name:"奥迪",type:"汽车"},
{name:"面包",type:"食物"}
3、添加/移除ArrayCollection项
1)添加项 ac.addItemAt({name:"奔驰",type:"汽车"},0); 注意是两个参数,不然会报错
2)移除项 ac.removeItemAt(0); 注意索引值如果大于ac中的项目,后面的语句不会执行。
3)同时移除多项
var toRemove:Array = [];
for(var i:int=0; i<tlist0.selectedItems.length;i++)
toRemove.push(tlist0.selectedItems[i]);
for(i=0;i<toRemove.length;i++)
myDP.removeItemAt(myDP.getItemIndex(toRemove[i]));
4)检测ArrayCollecction是否存在某对象
要检查ArrayCollection中是否存在复杂对象,需要比较两个对象的值,例如:
private function checkItem():int
{
var i:int;
var arr:Array = AC.source;
while()
{
if(arr[i].name==nameTI.text && arr[i].age==ageTI.text)
{
return i;
}
i++;
}
return -1;
}
不能用
AC.contains({name:nameTI.text,age:Number(ageTI.text)})
或
AC.getItemIndex({name:nameTI.text,age:Number(ageTI.text)})
因为contains和getItemIndex方法都是比较对象的指针,而不是他们的值。
这里要解释下:
private var arr:Array= new Array(
{name:"奔驰",type:"汽车"},
{name:"宝马",type:"汽车"},
{name:"大象",type:"动物"},
{name:"小高",type:"同学"}
);
private var ac:ArrayCollection = new ArrayCollection(arr);
protected function chk():void
{
label1.text = ac.contains({name:"小高",type:"同学"}).toString();
}
这里显示的是false;为什么?上面也说了,因为contains和getItemIndex都是比较对象的指针,而不是值,再来举个例子:
private var obj:Object = {name:“打印机”,type:"办公电器"};
private var arr:Array = new Array(
{name:"奔驰",type:"汽车"},
{name:"宝马",type:"汽车"},
{name:"大象",type:"动物"},
{name:"小高",type:"同学"},
obj
);
protected function chk():void
{
label1.text = ac.contains(obj).toString();
}
这里就会显示true了,也就是说虽然内容一样,但是在内存中的位置不同,那比较出来的就是false
5)监听ArrayCollection数据是否被修改
private var coll:ArrayCollection = new ArrayCollection();
coll.addEventListener(CollectionEvent.COLLECTION_CHANGE,collChangeHandler);
6)遍历ArrayCollection数据
for(var i:int=0; i<ac.length;i++)
{
trace(ac.getItemAt(i).name);
}
相关推荐
Flex的Array和ArrayCollection
ArrayCollection是基于Array的,但提供了对数据的更高级别的访问,如排序和过滤功能。在某些情况下,我们需要将ArrayCollection转换为XML格式,以便于数据交换或存储。本实例将详细介绍如何实现这一转换。 首先,...
本篇将详细介绍如何为Flex中的Tree组件设置不同的数据源,包括XML、Array和Object。 首先,让我们从XML数据源开始。XML因其结构化的特性,非常适合用来表示层次数据。在Flex中,我们可以使用mx.collections....
在IT行业中,ArrayCollection是ActionScript 3.0和Flex框架中的一个重要数据结构,它扩展了Array类,提供了对数据的双向绑定和事件通知功能。ArrayCollection不仅支持数组的操作,还具备列表的数据管理特性,因此在...
在Flex编程中,ArrayCollection是一种常用的集合类,它继承自Array类并添加了对数据绑定的支持。然而,尽管ArrayCollection通常被用作数据绑定的主要工具,但在特定情况下,可能会遇到“ArrayCollection不完全绑定”...
1. **数据绑定**:Datagrid可以直接与数据提供者进行绑定,数据提供者可以是Array、ArrayCollection或其他支持ICollectionView接口的数据源。这意味着你可以动态地更新数据源,Datagrid会自动反映这些更改。 2. **...
可以使用Array、XML、ArrayCollection或任何实现了IList接口的对象作为数据源。通过设置数据提供者,图表会自动更新以反映数据的变化。 3. **States和Effects**:Flex支持状态管理,允许你在不同场景下改变图表的...
ArrayCollection是基于Array的,但提供了数据绑定所需的额外功能,如事件触发和排序过滤。 4. **数据服务**:Flex可以与各种数据服务进行通信,如AMF(Action Message Format)服务、Web服务(SOAP或RESTful)、...
在Flex中,数据源可以是Array、ArrayCollection或XMLListCollection等。这些数据结构可以动态更新,从而实现图表的动态更新,这正是“DynamicUpdate”这个文件名所暗示的。 动态更新数据源的步骤通常包括: 1. ...
- **复杂数据类型**:包括 Array、ArrayCollection 和 Object 等。 - **数据类型转换**:可以通过隐式或显式的转换方式进行类型转换。 - **运算符**:主要包括算术运算符(如 +、-、*、/)、关系运算符(如 >、<、...
Flex数据绑定是Adobe Flex应用程序开发中的核心特性,它允许开发者将UI组件的属性与应用程序的数据模型进行连接,实现数据的动态更新和可视化。在Flex中,数据绑定是一种声明性编程方式,极大地简化了用户界面与业务...
在本教程中,我们将深入探讨Flex的基础知识,包括设计视图和源视图的使用,以及如何创建动态效果、处理事件和进行数据交互。 **设计视图与源视图** Flex 提供了两种工作方式:Design 视图和 Source 视图。Design ...
在Flex开发中,ArrayCollection是一种常用的集合类,它继承自Array并添加了对数据绑定和事件处理的支持。然而,当ArrayCollection应用了过滤器后,直接使用`removeItemAt()`方法尝试删除过滤后的数据可能会遇到问题...
DataGrid可以与各种数据源绑定,包括Array、ArrayCollection、XMLList等,也可以通过数据提供者机制连接到更复杂的后端服务。 二、DataGrid的基本使用 创建一个基本的DataGrid涉及以下几个步骤: 1. 导入必要的库:...
1. **数据绑定**:Flex Chart组件的数据源可以是XML、Array、ArrayCollection或其他可迭代对象,通过数据绑定机制将数据映射到图表上。 2. **Chart类型**:除了柱状图,Flex Chart还包括线性图(LineChart)、饼图...
在这个体系结构中,Flex作为客户端,使用BlazeDS作为中间层,处理与服务器之间的数据交换,而MySQL作为数据库存储和管理数据。 **Flex数据交互**: Flex是一款强大的开发工具,用于创建互动丰富的基于Flash的用户...
2. dataProvider:提供选项卡数据的集合,可以是Array、ArrayCollection或其他数据源。 3. allowMultipleSelection:控制是否允许多个TabItem同时被选中。 4. tabFactory:用于创建自定义TabItem实例的函数,实现...
1. **数据集(Data Provider)**:分页的基础是数据集,它可以是Array、ArrayCollection或其他支持数据绑定的数据源。数据集应包含所有要显示的数据,并负责管理分页逻辑。 2. **Pagination组件**:Flex并没有内置...
- **Array 和 ArrayCollection**:Array 是基本的数组类型,ArrayCollection 是它的动态版本,支持数据绑定。 9. **HTTP 请求**: - **HttpService**:用于向远程服务器发送 HTTP 请求,通过 `url` 指定请求地址...
在Flex开发中,Datagrid组件是用于展示数据集的一个强大工具,它允许用户以表格的形式查看和操作数据。本文将深入探讨如何在Flex的Datagrid中实现数据的合计与平均值计算,帮助开发者更好地理解和应用这些功能。 ...