我正在处理这个问题。我有24个动画片段(称为mc1,mc2,..,mc24),它们被放置在某种网格(6x4)的舞台上。我需要一个功能,它可以切换这些动画片段的位置(类似于随机播放,但具有其他动画片段的已知位置)。例如,mc1.x和mc1.y将等于mc4.x和mc4.y等。非常感谢您的时间和想法!
答案 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);
这会交换mc1
和mc4
的位置。
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]);
}
这将通过项目的前半部分,并使用项目的后半部分中的随机项目进行交换。