然后在AS3中对Splice XMLList或XMLList Collection进行排序

时间:2014-05-14 08:33:00

标签: actionscript-3 flex sorting splice xmllist

我尝试的都没有。我试图排序然后将XMLList或XMLListCollection拼接成一些结果。

这是我的代码:

public function chopData(){

//pData = pDataCollection.source;
pData = sortXMLListByAttribute(filteredData, sortField);
var thisLength = pData.length();
trace("thisLength: " + thisLength);
var maxAmountToShow = 30;


if(thisLength == null){
    thisLength = maxAmountToShow;
}

if( thisLength < maxAmountToShow){
    pData = SliceXMLList(pData, 0, thisLength - 1);
    //pDataCollection = SpliceXMLListCollection(pDataCollection, 0, thisLength - 1);
}else{
    pData = SliceXMLList(pData, 0, maxAmountToShow - 1);
    //pDataCollection = SpliceXMLListCollection(pDataCollection, 0, maxAmountToShow - 1);
}


pDataCollection = new XMLListCollection(pData);

}


 public static function sortXMLListByAttribute
 (
    $xmlList        :   XMLList,
    $attribute  :   String,
    $options    :   Object  =   null
) :XMLList
 {
//store in array to sort on
var xmlArray:Array= new Array();
var item:XML;
for each(item in $xmlList)
{
    var object:Object = {
        data    : item, 
        order   : item.attribute($attribute)
    };
    xmlArray.push(object);
}

////sort using the power of Array.sortOn()
xmlArray.sortOn('order',$options);

////create a new XMLList with sorted XML
var sortedXmlList:XMLList = new XMLList();
var xmlObject:Object;
for each(xmlObject in xmlArray )
{
    sortedXmlList += xmlObject.data;
}
return sortedXmlList;   
}

1 个答案:

答案 0 :(得分:0)

我找到了这个com.maximporges.MaskedCollection类,它运行得很好。

http://dreamingwell.com/examples/flex/scrollableGraph/srcview/