gpt4 book ai didi

actionscript-3 - 根据子剪辑中的值对一系列 MovieClip 进行排序

转载 作者:行者123 更新时间:2023-12-04 19:12:05 26 4
gpt4 key购买 nike

我有一个名为 Table 的类,它链接到舞台上的剪辑。
在设置过程中,我创建了许多 Table 实例,并为每个实例传递一个 TableData 类的实例。此 TableData 对象包括一个 ID 值。

我将选择的 Table 对象放入 Array我希望根据每个表的 TableData 实例中的 ID 值对其进行排序。

我希望使用的是类似的东西:myArray.sortOn("tableData.id");
这似乎不起作用,我认为 Array.sortOn()无法深入到子剪辑。
有没有办法实现这一目标?

最佳答案

Array和通用 Vector.<>集合都提供了 .sort() 的另一种形式接受一个函数的方法。您可以提供自己的排序实现,在这种情况下,它会查看对象并仅比较它们的特定部分。

考虑以下类:

class TableData {
public var ID:String;

public function TableData(id:String):void {
this.ID = id;
}

}

这是您的 TableData 的简化版本仅提供 ID 的类.然后是一个简化的 Table类(class):
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);

现在 list应该按照你想要的方式排序。

working example here .

documentation更多细节

关于actionscript-3 - 根据子剪辑中的值对一系列 MovieClip 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13956277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com