Наивный подход:
public function Main()
{
const array:Array = [1,2,3,4,5,6,7];
trace(array);
// 1,2,3,4,5,6,7
swapTwoRandomElements(array);
trace(array);
// 1,2,3,6,5,4,7
}
private function swapTwoRandomElements(input:Array):void
{
const indices:Array = [];
for (var i:int = 0; i < input.length; i++)
{
indices.push(i);
}
const indexFirst:int = indices[int(Math.random() * indices.length)];
indices.splice(indexFirst, 1);
const indexSecond:int = indices[int(Math.random() * indices.length)];
indices.splice(indexSecond, 1);
const tmp:* = input[indexFirst];
input[indexFirst] = input[indexSecond];
input[indexSecond] = tmp;
}
Где X Y позиция –
@ActionScriptstudent Можете ли вы изменить свой вопрос тогда? Непонятно, что вы имеете в виду под вопросом «где находится позиция X Y». Согласно общему вопросу, вы хотели поменять две случайные позиции в массиве. В вашем примере кода вы создаете массив массивов чисел, там нет координат X или Y. Если вы хотите использовать функцию свопинга с массивом ящиков, просто сделайте вызов: 'swapTwoRandomElements (boxs);' – Nbooo
@ActionScriptstudent Самый простой способ - определить начальные позиции в виде массива точек: 'const position: Array = [new Точка (20, 20), ... и т. Д.]. Затем просто используйте функцию свопинга для перетасовки этого массива. После того, как массив позиций будет перегруппирован, вам необходимо применить эти позиции к своим клипам в соответствующем порядке. Для анимации вы можете использовать какой-то пакет, например TweenLite. – Nbooo