随机化数组坐标,不重复 AS3

Randomising array coordinates with no duplicates AS3

对这种事情很陌生,所以请多多包涵。

所以基本上我有 4 个按钮,我使用“动作”面板将它们放到了舞台上。他们都设置了坐标,所以每次我 运行 我的游戏,他们都在同一个地方。

现在我的问题是,我希望这些按钮使用这些坐标随机化它们的位置,但我经常得到重复项,这意味着一个按钮在另一个按钮之上。

到目前为止,这是我的代码

var coordArray : Array = [
              new Point(44,420),
              new Point(270,420),
              new Point(44,550),
              new Point(270,550),

              ];            

var pointRange:Number = 4;
var randomPoint:int = Math.random()*pointRange;
answerButtons.x = coordArray[randomPoint].x;
answerButtons.y = coordArray[randomPoint].y;    

var pointRange_2:Number = 4;
var randomPoint_2:int = Math.random()*pointRange_2;
answerButtons_2.x = coordArray[randomPoint_2].x;
answerButtons_2.y = coordArray[randomPoint_2].y;

var pointRange_3:Number = 4;
var randomPoint_3:int = Math.random()*pointRange_3;
answerButtons_3.x = coordArray[randomPoint_3].x;
answerButtons_3.y = coordArray[randomPoint_3].y;

var pointRange_4:Number = 4;
var randomPoint_4:int = Math.random()*pointRange_4;
answerButtons_4.x = coordArray[randomPoint_4].x;
answerButtons_4.y = coordArray[randomPoint_4].y;

我已经在谷歌上大量搜索了这个,并且不断得到与拼接和移位方法有关的答案。这是我需要的东西吗?我假设我需要一个函数在使用后从数组中删除一个点。

干杯。

使用 splice:

随机选择时,只需从列表中删除坐标
var coordinates:Vector.<Point> = new <Point>[
    new Point(44, 420),
    new Point(270, 420),
    new Point(44, 550),
    new Point(270, 550)
];

function positionAtRandomCoordinate(object:DisplayObject):void {
    var index:int = Math.random() * coordinates.length;
    var coordinate:Point = coordinates.splice(index, 1)[0];
    object.x = coordinate.x;
    object.y = coordinate.y;
}

positionAtRandomCoordinate(answerButtons);
positionAtRandomCoordinate(answerButtons_2);
positionAtRandomCoordinate(answerButtons_3);
positionAtRandomCoordinate(answerButtons_4);