【发布时间】:2011-04-21 00:45:25
【问题描述】:
我有一个对象数组。每个对象都有一个颜色属性,可以是“红色”、“蓝色”、“黄色”、“绿色”、“橙色”或“紫色”。数组中有 20-30 个对象,因此颜色会重复。我的目标是对数组进行排序,以便没有颜色彼此相邻。颜色分布并不完全均匀,而是接近。
这是我目前所拥有的。它检查下一个和上一个对象的颜色匹配,如果找到匹配,则将其移动到数组的末尾。
private function sortColors():void
{
var getNext:uint;
var getPrev:uint;
var maxCount:uint = colorArray.length;
for (var i:uint = 0; i < maxCount; i++) {
var cur:ValueObject = colorArray[i];
(i == maxCount-1) ? getNext = 0 : getNext = i+1;
(i == 0) ? getPrev = maxCount-1 : getPrev = i-1;
var next:ValueObject = colorArray[getNext];
var prev:ValueObject = colorArray[getPrev];
if (cur.color == next.color) {
var move:ValueObject = colorArray[getNext];
colorArray.splice(getNext, 1);
colorArray.push(move);
}
if (cur.color == prev.color) {
var move:ValueObject = colorArray[getPrev];
colorArray.splice(getPrev, 1);
colorArray.push(move);
}
}
}
这工作正常,但如果有更多某种颜色,它们最终会在最后重复。我可以在最后添加一些东西来将它们重新混合,但我觉得必须有更好的方法。有人启发我。
【问题讨论】:
标签: arrays actionscript-3 sorting object actionscript