相互切换动画片段位置[AS3]

时间:2013-03-13 17:29:22

标签: actionscript-3 flash movieclip shuffle

我正在处理这个问题。我有24个动画片段(称为mc1,mc2,..,mc24),它们被放置在某种网格(6x4)的舞台上。我需要一个功能,它可以切换这些动画片段的位置(类似于随机播放,但具有其他动画片段的已知位置)。例如,mc1.x和mc1.y将等于mc4.x和mc4.y等。非常感谢您的时间和想法!

2 个答案:

答案 0 :(得分:1)

使用XOR交换。它基本上是这样的:

mc1.x ^= mc4.x;
mc4.x ^= mc1.x;
mc1.x ^= mc4.x;

mc1.y ^= mc4.y;
mc4.y ^= mc1.y;
mc1.y ^= mc4.y;

然后从那里开始。

答案 1 :(得分:0)

你的意思是这样的:

function swap(mcA:MovieClip, mcB:MovieClip):void
{
    var tempPosition:Point = new Point(mcA.x, mcA.y);
    mcA.x = mcB.x;
    mcA.y = mcB.y;

    mcB.x = tempPosition.x;
    mcB.y = tempPosition.y;
}
swap(mc1, mc4);

这会交换mc1mc4的位置。

var totalItems:int = 24; // total number of items
for(var i:int = 0; i < int(totalItems/2); i++)
{
    var randomItem:String = "mc"+(int(Math.random() * (int(totalItems/2)-1)) + (int(totalItems/2)+1));
    swap(this["mc"+(i+1)], this[randomItem]);
}

这将通过项目的前半部分,并使用项目的后半部分中的随机项目进行交换。