通常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
NULL 博文链接:https://tangdonglai.iteye.com/blog/1478277
NULL 博文链接:https://xaajie.iteye.com/blog/379054
tree多数情况下操作xml比较方便,而本人却对xml有些排斥,说得更确切些,对xml用的不是那么得心应手,所以选择了ArrayCollection
1.该图表的数据源为ArrayCollection类型的arrayC 2.每增加一条线,其实就是增加一个数据源中的ArrayCollection每个对象的一个属性,且属性名不能重复 3.修改ArrayCollection后,同时修改LineChart的series
as3xls 只支持excel2003版本以下的,不支持扩展名为.xlsx的excel,而类库Rxlsx支持.xlsx的excel。原Rxlsx不支持日期格式,读取日期单元格的数据会变成...//可转换为ArrayCollection,用于表格控件grid绑定数据显示出来
Flex的ArrayCollection在某些情况无法绑定解决方法
ArrayCollection求最大值,最小值,排序。供大家共同学习一下。
flex通过httpService读取xml数据到datagird中,通过读取远程URL的XML数据(这里保存到本地),保存到ArrayCollection中,然后在将ArrayCollection绑定到datagird上 环境:flex3.0 可直接运行
ArrayCollection添加过滤器后,调用removeItemAt()是无法删除的,下面有个不错的解决方法,大家可以参考下
as3xls 只支持excel2003版本以下的,不支持扩展名为.xlsx的excel,而类库Rxlsx支持.xlsx的excel,用法很简单,只需加载完成excel文件后执行: ...//可转换为ArrayCollection,用于表格控件grid绑定数据显示出来
如果你建立的项目不是flex项目,而需要使用ArrayCollection等,请把这个mx包引入解决问题
其中包含一个三种状态的checkbox,DataGrid代码中引用了 带多选框的DataGrid(AdvancedDataGrid) 表头有全选CheckBox,三种状态:全选、部分选择、无选择 如果改变目录结构,需要在...目前数据源只能用ArrayCollection
原理就是ArrayCollection的filterFunction的使用。是根据老外一个帖子改的,其他下载地址在 :http://www.zuidaima.com/share/1714555305004032.htm
Design 视图:按钮,图片 Source 视图 MXML/ActionScript 3.0 动态效果:移动,旋转,放大,淡入...表格DataGrid, dataProvider,集合对象Array,ArrayCollection Http请求 HttpService, 报表:饼图,折线图,柱状图
Flex 编程小技巧 1. 复制内容到剪贴板 1. System.setClipboard(strContent); 2. 复制一个 ArrayCollection 1. //dummy solution( well, it works ) 2. var bar:ArrayCollection = new ArrayCollection(); 3. for ...
因为new ArrayCollection 需要 array对象,event.result是空间返回对象(JAVA方法返回值)所以类型不同无法使用new 构造ArrayCollection ,可是恶心的FLEX偏偏支持javalist=ArrayCollection
flex外部读取xml
5.将FusionChartsFlex\Charts下面的FusionCharts和FusionWidgets两个文件夹复制到flex_src目录下和web目录下,注意:在复制之前,先将FusionCharts文件夹的名字全部改成小写,即fusioncharts,也可以复制后在项目...
flex自定义用ArrayCollection做数据源的带checkbox的tree(功能强大的完美版^_^) .