我之前看过这个问题(Flex arraycollection sorting not working),但它似乎与我所看到的问题无关。
我正在尝试使用自定义比较函数进行一种ArrayCollection(使用此处的示例:Alphanumeric Sorting in AS3)
问题:似乎我的List
实例中指定的字段名称没有传递给比较函数 - 而是对象本身。这似乎是错误的 - 但也许我是误解(这个问题和答案有点令人困惑:Flex: Sort -- Writing a custom compareFunction?) - 如果不是List
,在SortField
中指定字段名称有什么意义呢?用吗?
下面是一个精简的例子。我正在尝试对SortField
个实例列表进行排序。 compare函数中的trace语句确认File实例,而不是它们的名称属性作为参数传递。
我是否需要自定义比较功能?对于可重复使用的编码来说,这是**咳嗽**。
更新
正如经常发生的那样,我提出了一个解决问题的解决方案。在这种情况下使用代理功能。不过,我想知道为什么File
中指定的值没有被使用。
SortField
public function customCompare(obj1:*, obj2:*):int
{
return AlphaNumericSort.compare(obj1.name, obj2.name);
}
答案 0 :(得分:0)
我已经测试了你的代码。它工作正常。只在您的代码中替换以下行
sortField.compareFunction = AlphaNumericSort.compare;
到sortField.compareFunction = customCompare;