自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Flex Array和Flex ArrayCollection的用法和區(qū)別

開發(fā) 后端
Flex Array和Flex ArrayCollection各有各的特點和作用,本文向大家簡單介紹一下它們的用法和區(qū)別,希望本文的介紹能讓你有所收獲。

本文和大家重點討論一下Flex Array和Flex ArrayCollection的用法和區(qū)別,這里從六個方面向大家介紹,相信通過本文的學習你對二者之間的聯(lián)系會有明確的認識。

Flex Array和Flex ArrayCollection的用法和區(qū)別

1.Flex Array作為控件使用

FLEX3寫法:
 

  1. <mx:Flex Arrayidmx:Flex Arrayid=”barname”> 
  2. <mx:String>Flash</mx:String> 
  3. <mx:String>Director</mx:String> 
  4. <mx:String>Dreamweaver</mx:String> 
  5. <mx:String>ColdFusion</mx:String> 
  6. </mx:FlexArray> 

 FLEX4寫法:
 

  1. <fx:Flex Arrayidfx:Flex Arrayid=”barname”> 
  2. <fx:String>Flex</fx:String> 
  3. <fx:String>Flash</fx:String> 
  4. <fx:String>Dreamweaver</fx:String> 
  5. </fx:FlexArray> 

舉例
<mx:LinkBarid=”navigationBar”dataProvider=”{barname}”/>
<mx:LinkBarid=”navigationBar”dataProvider=”barname”/>
注:寫{},則當barname數(shù)據(jù)的值修改后,linkbar的數(shù)據(jù)同步更新

2.Flex Array在程序中使用

 

  1. [Bindable]  
  2. publicvarbarname:FlexArray=["Flex","Flash","Dreamweaver"];  
  3. <mx:LinkBaridmx:LinkBarid=”navigationBar”dataProvider=”{barname}”/> 
  4. varbarname:FlexArray=newFlexArray();  
  5. barname.push(“Flex”);  
  6. barname.push(“Flash”);  
  7. barname.push(“Dreamweaver”);  
  8. navigationBar.dataProvider=barname;  
  9.  

 3.Flex Array的排序

  1. privatevartemp:FlexArray=newFlexArray(1,4,3,45,4,6,7,77,9);  
  2. functionsortFlex Array(numbers:Flex Array):Flex Array{  
  3. numbers.sort(Flex Array.NUMERIC);  
  4. returnnumbers;  
  5. }  
  6.  

 4.Flex ArrayCollection特點

Flex ArrayCollection是flex中的數(shù)組集合類,它是很常用的,我們使用它時需要注意幾個地方。

(1)事件監(jiān)聽
Flex ArrayCollection可以為它注冊一個集合改變的監(jiān)聽事件(CollectionEvent.COLLECTION_CHANGE),就是一旦Flex ArrayCollection數(shù)組改變就會觸發(fā)Event,不是所有情況的改變都會觸發(fā)改變事件,如果集合當中的對象屬性沒有被綁定,那么你改變它的對象值也是不會觸發(fā)事件的,在這種情況下你也許可能需要去將對象的屬性進行綁定或者通過itemUpdated方法去管理對象值改變,除非集合的長度改變了,事件才會被觸發(fā)。

(2)對象刪除
Flex ArrayCollection的對象刪除方法removeAll(),有這樣一種情況,當你在過濾集合數(shù)據(jù)的時候,它并不會刪除所有數(shù)據(jù),而是刪除全部過濾的數(shù)據(jù),不符合過濾條件的數(shù)據(jù)就沒被刪除,依然還在source中。

(3)過濾函數(shù)
Flex ArrayCollection有個filterFunction過濾函數(shù),就是可能集合中你只需要顯示其中某幾個對象,你將會需要根據(jù)對象條件篩選對象,那么你可能會用過濾函數(shù),過濾函數(shù)會將不符合條件的對象過濾出來,但是Flex ArrayCollection有個source屬性是不會變的,它是個數(shù)組,所有源數(shù)據(jù)全在里面,盡管你去過濾,所有對象都會一直存在其中。

(4)排序
Flex ArrayCollection還有一個sort屬性是用來排序的,你可以為其指定排序字段。

5.ArrayCollection在程序中使用

(1)插入或刪除
 

  1. importmx.collections.Flex ArrayCollection;  
  2. privatevarcoll:Flex ArrayCollection;  
  3. coll=newFlex ArrayCollection(  
  4. [{name:"MartinFoo",age:25},  
  5. {name:"JoeBar",age:15},  
  6. {name:"JohnBaz",age:23}]);  
  7. }  

要插入元素,可使用addItemAt和addItem:
coll.addItemAt({name:”JamesFez”,age:40},0);
coll.addItem({name:”JamesFez”,age:40});

(2)搜索
Sort對象提供findItem方法用于搜索這個Flex ArrayCollection中的所有元素。
方法原型如下:
publicfunctionfindItem(items:Flex Array,values:Object,mode:String,
returnInsertionIndex:Boolean=false,compareFunction:Function=null):int
Value參數(shù)可以是包含屬性和所需值的任何對象。

Mode字符串可以是Sort.ANY_INDEX_MODE,表示返回任何匹配項索引,Sort.FIRST_INDEX_MODE表示返回第一個匹配項索引,Sort.LAST_INDEX_MODE表示返回最后一個匹配項索引。
returnInsertionIndex參數(shù)表示如果該方法找不到由values參數(shù)標識的項目,并且此參數(shù)為
true,則findItem()方法將返回這些值的插入點,也就是排序順序中應(yīng)插入此項目的。
compareFunction設(shè)置用于查找該項目的比較運算符函數(shù).
舉例
 

  1. privatefunctioncheckExistence():int{  
  2. varsort:Sort=newSort();  
  3. returnsort.findItem(coll.source,{name:nameTI.text,age:Number(ageTI.text)},Sort.ANY_INDEX_MODE);  
  4. }  

 (3)過濾

filterFunction屬性是由ListCollectionView類定義,它是Flex ArrayCollection的父類。
當過濾器函數(shù)被傳遞給繼承自ListCollectionView的任何子類后,這里為Flex ArrayCollection對象,應(yīng)用過濾器后必須調(diào)用refresh方法
將原型為function(item:Object):Boolean的函數(shù)傳遞給Flex ArrayCollection的filter屬性。如果返回true表示值繼續(xù)留在Flex ArrayCollection,返回false表示其值被移除。
 

(4)排序

首先要創(chuàng)建一個Sort,傳遞一個SortField對象數(shù)組給fields屬性。這些SortField對象包含的字符串正是每個Flex ArrayCollection元素將要用來排序的屬性。如要對每個對象的age屬性進行排序,創(chuàng)建Sort對象,傳遞SortField。
設(shè)置排序字段為age:
 

  1. privatefunctiongetOldest():void{  
  2. varsort:Sort=newSort();  
  3. sort.fields=[newSortField("age")];  
  4. coll.sort=sort;  
  5. coll.refresh();  
  6. trace(coll.getItemAt(0).age+”“+coll.getItemAt(0).name);  


先按name升序排序,再按age降序排序
sort.fields=[newSortField("name"),newSortField("age",true,true)];

API說明:
publicfunctionSortField(
name:String=null,
caseInsensitive:Boolean=false,
descending:Boolean=false,
numeric:Object=null)

參數(shù)
name:String(default=null)—此字段用來進行比較的屬性的名稱。如果該對象為簡單類型,則傳遞null。
caseInsensitive:Boolean(default=false)—在對字符串進行排序時,指示比較運算符是否忽略值的大小寫。
descending:Boolean(default=false)—指示比較運算符是否按降序排列項目。
numeric:Object(default=null)—指示比較運算符是否按編號而不按字母順序比較排序項目。

6.Flex Array和ArrayCollection的比較

Flex Array的優(yōu)點:

1)Flex Array的性能優(yōu)于Flex ArrayCollection,從測試結(jié)果平均看來,F(xiàn)lex ArrayCollection的效率是隨著object的數(shù)目呈線性下降的,而Flex Array則是體現(xiàn)了優(yōu)異的效率,在object增加的情況下,基本上沒有太大的變化。所以如果在你需要遍歷所有元素的情況下(比如說物理引擎,3D引擎等),F(xiàn)lex Array是不錯的選擇
程序見附件1.
2)后臺JavaBean也用的是數(shù)組[]
3)for循環(huán)數(shù)組似乎比foreachFlex ArrayConllection看起來更“傻瓜化”
4)給Flex Array數(shù)組擴展長度,也可以變通實現(xiàn),而且代價并不大

ArrayCollection的優(yōu)點:

1)Flex ArrayCollection實現(xiàn)接口ICollectionView,在Flex的類定義內(nèi)屬于[數(shù)據(jù)集],他提供更強大的檢索、過濾、排序、分類、更新監(jiān)控等功能。類似的類還有XMLListCollection
2)用Flex Array在作為dataProvider綁定于control之上,就無法獲得控件的更新(實際上效果是可以得到更新的),除非控件被重新繪制或者dataprovider被重新指定,而Collection則是將Flex Array的副本存儲于Collection類的某個對象之中,其特點是Collection類本身就具備了確保數(shù)據(jù)同步的方法,例子如下(取自adobe內(nèi)部工程師training示例,稍有改變)
3)對Flex ArrayCollection中的對象進行增加刪除更新操作時Flex ArrayCollection會產(chǎn)生事件,可以通過collectionchange事件監(jiān)聽,所以在圖表開發(fā)中都用Flex ArrayCollection做數(shù)據(jù)源,一旦有更新,就會反映在圖標上

【編輯推薦】

  1. 解析FlexSDK4的十大變化
  2. Flex必須了解的那些事
  3. 在Flex中使用樣式的五大方法
  4. FlexBuilder3.0與Eclipse3.4的完美結(jié)合
  5. Flex ComboBox和Datagrid組件用法指導

 

責任編輯:佚名 來源: chhua.com
相關(guān)推薦

2010-07-27 14:58:02

Flex ArrayC

2010-07-27 14:36:31

Flex Array

2010-07-30 14:09:30

FlexFlash

2010-08-12 15:30:27

FlexFlash

2010-08-03 15:02:45

FlexPHP

2010-07-27 13:53:15

Flex ComboB

2010-07-27 15:03:37

Flex ArrayC

2010-07-30 14:26:21

FlexFlash

2010-08-13 10:01:46

Flex樣式定義

2010-07-28 16:05:47

ExtjsFlex

2010-08-12 13:59:37

FlexList控件

2010-07-27 15:28:02

Flex DataBi

2010-07-27 16:03:42

Flex

2010-07-29 13:34:36

Flex樣式

2010-08-11 11:17:49

FlexFlash

2010-08-05 08:54:00

Flex優(yōu)勢

2010-08-06 10:03:42

Flex事件

2022-04-15 14:57:57

Flex布局鴻蒙操作系統(tǒng)

2010-08-12 09:25:35

Flex控件

2010-08-12 15:20:49

Flex Builde
點贊
收藏

51CTO技術(shù)棧公眾號