2016-08-19 2 views
-2
//array 
var boxs: Array = new Array 
boxs[0] = [b1.x = 307.95 , b1.y = 202] 
boxs[1] = [b2.x = 233.95 , b2.y = 202] 
boxs[2] = [b3.x = 159.95 , b3.y = 202] 

//varable 
var oldg:Number = 0 
//random number 
oldg = Number(Math.floor(Math.random()*boxs.length)) 

ответ

1

Наивный подход:

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; 
    } 
+0

Где X Y позиция –

+0

@ActionScriptstudent Можете ли вы изменить свой вопрос тогда? Непонятно, что вы имеете в виду под вопросом «где находится позиция X Y». Согласно общему вопросу, вы хотели поменять две случайные позиции в массиве. В вашем примере кода вы создаете массив массивов чисел, там нет координат X или Y. Если вы хотите использовать функцию свопинга с массивом ящиков, просто сделайте вызов: 'swapTwoRandomElements (boxs);' – Nbooo

+0

@ActionScriptstudent Самый простой способ - определить начальные позиции в виде массива точек: 'const position: Array = [new Точка (20, 20), ... и т. Д.]. Затем просто используйте функцию свопинга для перетасовки этого массива. После того, как массив позиций будет перегруппирован, вам необходимо применить эти позиции к своим клипам в соответствующем порядке. Для анимации вы можете использовать какой-то пакет, например TweenLite. – Nbooo

Смежные вопросы