你能解释一下 as3 随机交换形状的位置吗
can you explain me as3 randomly swap shapes' positions
我复制了一些代码,想使用它,但我不明白。这段代码是关于如何在特定位置随机交换形状的位置。谁能简单解释一下这段代码是如何工作的?
function randomSort(a:*, b:*):Number
{
if (Math.random() < 0.5) return -1;
else return 1;
}
// Push 12 positions as new Point() in an array.
var positions:Array = [ new Point(12, 42), new Point(43, 56), new Point(43,87) ]; // ...add 12 positions
var mcs:Array = [mc1, mc2, mc3]; // ...add 12 mcs
positions.sort(randomSort);
// link randomized position to MovieClips:
for (var i:int = 0, l:int = positions.length; i < l, i++ ) {
var mc:MovieClip = mcs[i];
var point:Point = positions[i];
mc.x = point.x;
mc.y = point.y;
}
有两个列表:MovieClips 和 Points。提供的脚本随机化其中一个列表,因此每个 MovieClip 从给定的列表中随机获得一个 Point。
随机排序的想法可能有点令人困惑。 Array.sort() 方法旨在根据给定的标准组织 Array 的元素,但是如果您给出基于随机的标准相反,元素没有预定义的顺序混合。
另一种(可能更容易理解的)方法是将固定的 MovieClip 匹配到随机的 Point,然后从各自的列表中删除匹配的对,然后继续直到剩下项目。
var P:Array = [new Point(12, 42), new Point(43, 56), new Point(43,87)];
var M:Array = [mc1, mc2, mc3];
// Do while there are items to process.
while (M.length)
{
// Get the last MovieClip and remove it from the list.
var aMC:MovieClip = M.pop();
// Produce a random Point.
var anIndex:int = Math.random() * P.length;
var aPo:Point = P[anIndex];
// Remove the selected Point from its list.
P.splice(anIndex, 1);
// Move the selected MovieClip to the selected Point coordinates.
aMC.x = aPo.x;
aMC.y = aPo.y;
}
我复制了一些代码,想使用它,但我不明白。这段代码是关于如何在特定位置随机交换形状的位置。谁能简单解释一下这段代码是如何工作的?
function randomSort(a:*, b:*):Number
{
if (Math.random() < 0.5) return -1;
else return 1;
}
// Push 12 positions as new Point() in an array.
var positions:Array = [ new Point(12, 42), new Point(43, 56), new Point(43,87) ]; // ...add 12 positions
var mcs:Array = [mc1, mc2, mc3]; // ...add 12 mcs
positions.sort(randomSort);
// link randomized position to MovieClips:
for (var i:int = 0, l:int = positions.length; i < l, i++ ) {
var mc:MovieClip = mcs[i];
var point:Point = positions[i];
mc.x = point.x;
mc.y = point.y;
}
有两个列表:MovieClips 和 Points。提供的脚本随机化其中一个列表,因此每个 MovieClip 从给定的列表中随机获得一个 Point。
随机排序的想法可能有点令人困惑。 Array.sort() 方法旨在根据给定的标准组织 Array 的元素,但是如果您给出基于随机的标准相反,元素没有预定义的顺序混合。
另一种(可能更容易理解的)方法是将固定的 MovieClip 匹配到随机的 Point,然后从各自的列表中删除匹配的对,然后继续直到剩下项目。
var P:Array = [new Point(12, 42), new Point(43, 56), new Point(43,87)];
var M:Array = [mc1, mc2, mc3];
// Do while there are items to process.
while (M.length)
{
// Get the last MovieClip and remove it from the list.
var aMC:MovieClip = M.pop();
// Produce a random Point.
var anIndex:int = Math.random() * P.length;
var aPo:Point = P[anIndex];
// Remove the selected Point from its list.
P.splice(anIndex, 1);
// Move the selected MovieClip to the selected Point coordinates.
aMC.x = aPo.x;
aMC.y = aPo.y;
}