- 浏览: 132359 次
- 性别:
- 来自: 郑州
文章分类
最新评论
-
Ken艹小哲:
太赞了 哥们 加扣
猜数字问题的最少步数算法. -
chenyuan122912:
...
解决AS3 Socket编程中最令人头疼的问题 -
hyx0914:
有源代码打包下载的吗?
Flex地图分块加载的实现 -
tianhai110:
非常有价值的 测试总结
时间效率,Timer和EnterFrame在FP 10.1之后测试和建议 -
763675117:
你好,fengxiangpiao,看了你的文档,我的需求和你差 ...
解决MovieClip打印问题 转
在Flex的开发过程中,常常会遇到复制ArrayCollection的情况。以前只是从网上找个方法拿来就用,也没有具体的搞清楚所以然来。今天有时间,研究了一下,总结如下: Flex中的复制同java一样,也分为深复制和浅复制。(如果您对java的深复制和浅复制理解不深的话,可以参考我前一篇文章:JAVA中浅复制与深复制) 下面总结一下ArrayCollection的浅复制,共有4种方法: 1、var newArray:ListCollectionView=new ListCollectionView(ListCollectionView(oldArray).list); 2、var newArray:ArrayCollection=new ArrayCollection(oldArray.source); 3、var newArray:ArrayCollection=new ArrayCollection(oldArray.source.slice()); 4、var newArray:ArrayCollection=new ArrayCollection(oldArray.toArray()); 以上方法中,第一种方法由于不是创建的独立的ArrayCollection对象,所以不推荐使用。第二、三、四种方法相似,可以参考使用。 有的时候,我们也会用到深复制,方法如下: var newArray:ArrayCollection=ArrayCollection(this.clone(oldArray)); this.clone()方法定义如下: function clone(source:Object):* 下面是我测试以上程序的Flex程序代码,大家可以参考:
{
var myBA:ByteArray = new ByteArray();
myBA.writeObject(source);
myBA.position = 0;
return(myBA.readObject());
}
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp()" layout="absolute">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.collections.ListCollectionView;
import mx.controls.Alert;
import flash.utils.ByteArray;
public function initApp():void
{
}
//开始测试:
//浅复制1
private function test1():void
{
//初始化需要的对象
var obj1:Object=new Object();//定义对象obj1
var obj11:Object=new Object();//定义对象obj1的引用对象obj11
obj1.name="obj1.name";
obj1.sub=obj11;//obj1的sub属性引用obj11
obj11.name="obj11.name";
//实例化ArrayCollection对象,并将obj1添加进该对象
var oldArray:ArrayCollection=new ArrayCollection();
oldArray.addItem(obj1);
//浅复制ArrayCollection
var newArray:ListCollectionView=new ListCollectionView(ListCollectionView(oldArray).list);
//修改obj11.name的值
obj11.name="obj11.name is changed!";
//输出复制前后的两个对象所引用的obj11对象的name属性值,如一致为浅复制,不一致为深复制
Alert.show(oldArray.getItemAt(0).sub.name+"---"+newArray.getItemAt(0).sub.name);
}
//浅复制2
private function test2():void
{
//初始化需要的对象
var obj1:Object=new Object();//定义对象obj1
var obj11:Object=new Object();//定义对象obj1的引用对象obj11
obj1.name="obj1.name";
obj1.sub=obj11;//obj1的sub属性引用obj11
obj11.name="obj11.name";
//实例化ArrayCollection对象,并将obj1添加进该对象
var oldArray:ArrayCollection=new ArrayCollection();
oldArray.addItem(obj1);
//浅复制ArrayCollection
var newArray:ArrayCollection=new ArrayCollection(oldArray.source);
//修改obj11.name的值
obj11.name="obj11.name is changed!";
//输出复制前后的两个对象所引用的obj11对象的name属性值,如一致为浅复制,不一致为深复制
Alert.show(oldArray.getItemAt(0).sub.name+"---"+newArray.getItemAt(0).sub.name);
}
//浅复制3
private function test3():void
{
//初始化需要的对象
var obj1:Object=new Object();//定义对象obj1
var obj11:Object=new Object();//定义对象obj1的引用对象obj11
obj1.name="obj1.name";
obj1.sub=obj11;//obj1的sub属性引用obj11
obj11.name="obj11.name";
//实例化ArrayCollection对象,并将obj1添加进该对象
var oldArray:ArrayCollection=new ArrayCollection();
oldArray.addItem(obj1);
//浅复制ArrayCollection
var newArray:ArrayCollection=new ArrayCollection(oldArray.source.slice());
//修改obj11.name的值
obj11.name="obj11.name is changed!";
//输出复制前后的两个对象所引用的obj11对象的name属性值,如一致为浅复制,不一致为深复制
Alert.show(oldArray.getItemAt(0).sub.name+"---"+newArray.getItemAt(0).sub.name);
}
//浅复制4
private function test4():void
{
//初始化需要的对象
var obj1:Object=new Object();//定义对象obj1
var obj11:Object=new Object();//定义对象obj1的引用对象obj11
obj1.name="obj1.name";
obj1.sub=obj11;//obj1的sub属性引用obj11
obj11.name="obj11.name";
//实例化ArrayCollection对象,并将obj1添加进该对象
var oldArray:ArrayCollection=new ArrayCollection();
oldArray.addItem(obj1);
//浅复制ArrayCollection
var newArray:ArrayCollection=new ArrayCollection(oldArray.toArray());
//修改obj11.name的值
obj11.name="obj11.name is changed!";
//输出复制前后的两个对象所引用的obj11对象的name属性值,如一致为浅复制,不一致为深复制
Alert.show(oldArray.getItemAt(0).sub.name+"---"+newArray.getItemAt(0).sub.name);
}
//深复制
private function test5():void
{
//初始化需要的对象
var obj1:Object=new Object();//定义对象obj1
var obj11:Object=new Object();//定义对象obj1的引用对象obj11
obj1.name="obj1.name";
obj1.sub=obj11;//obj1的sub属性引用obj11
obj11.name="obj11.name";
//实例化ArrayCollection对象,并将obj1添加进该对象
var oldArray:ArrayCollection=new ArrayCollection();
oldArray.addItem(obj1);
//浅复制ArrayCollection
var newArray:ArrayCollection=ArrayCollection(this.clone(oldArray));
//修改obj11.name的值
obj11.name="obj11.name is changed!";
//输出复制前后的两个对象所引用的obj11对象的name属性值,如一致为浅复制,不一致为深复制
Alert.show(oldArray.getItemAt(0).sub.name+"---"+newArray.getItemAt(0).sub.name);
}
//深复制调用的方法
function clone(source:Object):*
{
var myBA:ByteArray = new ByteArray();
myBA.writeObject(source);
myBA.position = 0;
return(myBA.readObject());
}
]]>
</mx:Script>
<mx:Button label="第一种浅复制方法" click="test1()" x="61" y="36"/>
<mx:Button label="第二种浅复制方法" click="test2()" y="57" x="61" width="114"/>
<mx:Button label="第三种浅复制方法" click="test3()" y="78" x="61" width="114"/>
<mx:Button label="第四种浅复制方法" click="test4()" y="98" x="61" width="114"/>
<mx:Button label="深复制方法" click="test5()" y="147" x="61"/>
</mx:Application>
发表评论
-
最全的Flex网站
2011-10-15 23:18 674一、国外站点 1.资源 类Adobe Flex 2 ... -
时间效率,Timer和EnterFrame在FP 10.1之后测试和建议
2011-04-23 22:19 1016关于Timer还是EnterFrame的选择,一直是很 ... -
时间效率,Timer 和 EnterFrame 在 FP 10.1 之后测试和建议
2011-04-23 22:16 1028关于Timer还是EnterFrame的选择,一直是很多AS3 ... -
Socket粘包问题
2011-04-22 23:21 984这些天做类似QQ空间的 ... -
关于Flash Socket通信的安全策略问题的一点心得
2011-04-22 22:36 668昨天做测试的时候遇到 ... -
FLEX入门实例--------FLEX全屏功能实现及右键菜单
2011-03-26 11:58 780FLEX的全屏功能的实现,光写AS还不够,还需要对JS部分做一 ... -
flex中的Text属性
2010-12-08 12:31 841不同于Lable只显示单行文本,Text可以显示多行文本, ... -
Flex跨域问题
2010-11-08 17:55 756From ESRI: The client brow ... -
Flex屏蔽并自定义鼠标右键菜单(转载)
2010-11-08 17:53 838最近手头有个项目需要屏蔽Flex鼠标右键菜单并自定义新的fle ... -
使用 IBM Rational Functional Tester 7.0.1 测试 Flex 应用程序
2010-11-05 21:45 813关于这篇文章必要的信息 这篇文章假定您已经对使用 IBM® ... -
在 Ajax 应用程序中实现实时数据推送
2010-11-05 21:40 637简介 Ajax 技术已经存在了一段时间,开发的动力已经真正开 ... -
使用 Flex 和 Dojo 开发交互式Web应用程序
2010-11-05 21:38 951引言 以用户体验为核 ... -
Flex 应用内存泄露的分析与诊断
2010-11-05 21:36 773引言 Flex 采用 ActionScrip ... -
flex SystemManger
2010-11-05 16:35 669软件编程牛人网 Framework Fundamentals ... -
Flex 不同 application 之间传参数
2010-11-05 16:33 459软件编程牛人网 通过主影片来获得所有子影片的systemma ... -
如何在flash保留小数位
2010-11-04 20:07 794在家上网赚钱更容易 fl ... -
实例讲解Flex3的SharedObject对象用法
2010-11-04 16:01 731在家上网赚钱更容易 Flex中的SharedObj ... -
Flex中12个最基本、最简单但却最有用的函数
2010-11-04 15:54 662在家上网赚钱更容易 No.1 复制内容到剪贴板 S ... -
flex中的拖放操作(一)
2010-11-04 15:47 898在家上网赚钱更容易 可视化的开发环境最大的特点是允许你在 ... -
flex中的拖放操作(二)
2010-11-04 15:46 745在家上网赚钱更容易 手动添加 drag-and-drop ...
相关推荐
NULL 博文链接:https://xaajie.iteye.com/blog/379054
Flex的Array和ArrayCollection
tree多数情况下操作xml比较方便,而本人却对xml有些排斥,说得更确切些,对xml用的不是那么得心应手,所以选择了ArrayCollection
NULL 博文链接:https://tangdonglai.iteye.com/blog/1478277
Flex的ArrayCollection在某些情况无法绑定解决方法
ArrayCollection求最大值,最小值,排序。供大家共同学习一下。
ArrayCollection添加过滤器后,调用removeItemAt()是无法删除的,下面有个不错的解决方法,大家可以参考下
java-flex-mysql,实现增删改查,用户富客户端Flex,后台java封装list形式,Flex前台ArrayCollection来接受!
Flex 编程小技巧 1. 复制内容到剪贴板 1. System.setClipboard(strContent); 2. 复制一个 ArrayCollection 1. //dummy solution( well, it works ) 2. var bar:ArrayCollection = new ArrayCollection(); 3. for ...
flex通过httpService读取xml数据到datagird中,通过读取远程URL的XML数据(这里保存到本地),保存到ArrayCollection中,然后在将ArrayCollection绑定到datagird上 环境:flex3.0 可直接运行
4.找到fusioncharts文件中FusionChartsFlex\Charts\FlashBuilder4_SWC下面的那个swc文件,将其复制到flex-libs文件夹下: 5.将FusionChartsFlex\Charts下面的FusionCharts和FusionWidgets两个文件夹复制到flex_...
如果你建立的项目不是flex项目,而需要使用ArrayCollection等,请把这个mx包引入解决问题
//fr.data为flex加载excel的byte数组 var sheet:Array = excel.getSheetArray();//得到表格数据,为Array格式 var datasource:ArrayCollection = new ArrayCollection(sheet); //可转换为ArrayCollection,用于表格...
1. Java通过第三方控件POI操作Excel,读取的数据存储在...2. 通过Blazeds将ArrayList发送到Flex中的ArrayCollection中。(Blazeds构建过程不在本篇讨论范围,见flex4+blazeds+java通信(视频)) 3. 绑定到DataGrid。
flex外部读取xml
flex自定义用ArrayCollection做数据源的带checkbox的tree(功能强大的完美版^_^) .
其中包含一个三种状态的checkbox,DataGrid代码中引用了 带多选框的DataGrid(AdvancedDataGrid) 表头有全选CheckBox,三种状态:全选、部分选择、无选择 如果改变目录结构,需要在...目前数据源只能用ArrayCollection
因为new ArrayCollection 需要 array对象,event.result是空间返回对象(JAVA方法返回值)所以类型不同无法使用new 构造ArrayCollection ,可是恶心的FLEX偏偏支持javalist=ArrayCollection
//fr.data为flex加载excel的byte数组 var sheet:Array = excel.getSheetArray();//得到表格数据,为Array格式 var datasource:ArrayCollection = new ArrayCollection(sheet); //可转换为ArrayCollection,用于...
import mx.collections.ArrayCollection; import mx.rpc.events.ResultEvent; [Bindable] private var slides:ArrayCollection private function resultHandler(event:ResultEvent):void ...