随机化阵列坐标,没有重复的AS3

时间:2016-03-18 16:40:07

标签: actionscript-3 flash random duplicates coordinates

这种事情很新,所以请耐心等待。

所以基本上我有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;

我已经大量搜索了这篇文章,并且我一直在寻找与拼接和移位方法相关的答案。这是我需要的东西吗?我假设我需要一个在使用后从数组中删除一个点的函数。

干杯。

1 个答案:

答案 0 :(得分:0)

使用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);