Actionscript 3 根据子剪辑中的值对MovieClips数组进行排序
我有一个叫做Table的类,它链接到舞台上的一个剪辑。 在安装过程中,我创建了许多表实例,并将每个表实例传递给TableData类的实例。此TableData对象包含一个ID值 我将选择的表对象放入Actionscript 3 根据子剪辑中的值对MovieClips数组进行排序,actionscript-3,flash,Actionscript 3,Flash,我有一个叫做Table的类,它链接到舞台上的一个剪辑。 在安装过程中,我创建了许多表实例,并将每个表实例传递给TableData类的实例。此TableData对象包含一个ID值 我将选择的表对象放入数组中,我希望根据每个表的TableData实例中的ID值对其进行排序 我希望使用的是类似于:myArray.sortOn(“tableData.id”) 这似乎不起作用,我假设Array.sortOn()无法深入到子剪辑中。 有什么方法可以实现这一点吗?数组和泛型向量。集合都提供了采用函数的.sor
数组中
,我希望根据每个表的TableData实例中的ID值对其进行排序
我希望使用的是类似于:myArray.sortOn(“tableData.id”)代码>
这似乎不起作用,我假设Array.sortOn()
无法深入到子剪辑中。
有什么方法可以实现这一点吗?数组
和泛型向量。
集合都提供了采用函数的.sort()
方法的另一种形式。您可以提供自己的排序实现,在这种情况下,它可以查看对象并只比较其中的特定部分
考虑以下类别:
class TableData {
public var ID:String;
public function TableData(id:String):void {
this.ID = id;
}
}
这是TableData
类的简化版本,它只提供ID
。然后是一个简化的表
类:
class Table {
private var _data:TableData;
public function get data():TableData {
return _data;
}
public function Table(tableData:TableData) {
_data = tableData;
}
}
最后,让我们将它们投入使用,并创建一个新的集合
var list:Vector.<Table> = new Vector.<Table>();
list.push(new Table(new TableData("X")));
list.push(new Table(new TableData("C")));
list.push(new Table(new TableData("S")));
list.push(new Table(new TableData("A")));
现在,应该按照您想要的方式对列表进行排序
看一看
有关更多详细信息,请参见我已通过在我的表类中存储一个重复的ID值并对其进行排序,解决了这个问题。这是可行的,但并不理想,因为ID值会经常更改,我需要额外的工作来保持副本的更新。我仍然很想知道是否有更干净的方法可以做到这一点。干杯:)回答得好,解释得很好。谢谢你的帮助。
private function sortUsingDataID(a:Table, b:Table):int {
var aID:String = a.data.ID;
var bID:String = b.data.ID;
return aID < bID ? aID == bID ? 0 : -1 : 1;
}
list.sort(sortUsingDataID);