actionscript-3 – 在子剪辑中的值上对MovieClip数组进行排序
发布时间:2020-12-15 07:25:52 所属栏目:百科 来源:网络整理
导读:我有一个名为Table的类,它链接到舞台上的剪辑. 在安装过程中,我创建了许多Table实例,并为每个实例传递一个TableData类的实例.此TableData对象包含ID值. 我把一些我的Table对象放在一个数组中,我想根据每个Table的TableData实例中的ID值进行排序. 我希望使用
我有一个名为Table的类,它链接到舞台上的剪辑.
在安装过程中,我创建了许多Table实例,并为每个实例传递一个TableData类的实例.此TableData对象包含ID值. 我把一些我的Table对象放在一个数组中,我想根据每个Table的TableData实例中的ID值进行排序. 我希望使用的是:myArray.sortOn(“tableData.id”); 这似乎不起作用,我认为Array.sortOn()无法向下钻取到子剪辑. 解决方法
数组和通用Vector.<>集合都提供了.sort()方法的替代形式,它接受一个函数.您可以提供自己的排序实现,在这种情况下,它会查看对象并仅比较它们的特定部分.
考虑以下课程: class TableData { public var ID:String; public function TableData(id:String):void { this.ID = id; } } 这是TableData类的简化版本,仅提供ID.然后是简化的Table类: 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"))); 现在,我们需要创建一个实际进行比较的新函数: 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; } 这个函数期望得到两个项,并且应该返回-1,0或1.如果a应该在b之前,那么函数应该返回-1.否则,如果a应该在b之后,那么它应该返回1.最后,如果两者相同,那么它应该返回值0. 所以,现在我们只需要通过调用.sort并传入我们的函数来告诉数组使用我们的自定义排序函数. list.sort(sortUsingDataID); 现在列表应该按照您想要的方式排序. 见working example here. 有关详细信息,请参阅documentation (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |