Flash 创建一个类似于as3中纸牌叠的纸牌叠

Flash 创建一个类似于as3中纸牌叠的纸牌叠,flash,actionscript-3,Flash,Actionscript 3,我正在创建一个纸牌游戏,一切正常,但我无法创建一堆纸牌,如下所示: 如果我有4张卡在一个数组中表示,比如黑桃的4,5,6,7,那么我希望优先级最低的卡放在上面,优先级最高的卡放在第一张卡后面 如何实现这一点?我假设您知道如何创建显示对象(您的视觉卡),因此我在回答中不会提及这一点 我会创建一个持卡人精灵,并将我的卡添加到该精灵中,以控制卡的深度顺序。您可以使用(将displayObject添加到前面)或(将displayObject添加到所需位置)将卡添加到堆栈精灵中。如果使用addChildA

我正在创建一个纸牌游戏,一切正常,但我无法创建一堆纸牌,如下所示:

如果我有4张卡在一个数组中表示,比如黑桃的4,5,6,7,那么我希望优先级最低的卡放在上面,优先级最高的卡放在第一张卡后面


如何实现这一点?

我假设您知道如何创建显示对象(您的视觉卡),因此我在回答中不会提及这一点

我会创建一个持卡人精灵,并将我的卡添加到该精灵中,以控制卡的深度顺序。您可以使用(将displayObject添加到前面)或(将displayObject添加到所需位置)将卡添加到堆栈精灵中。如果使用addChildAt并使用0作为索引,则会将其添加到所有其他displayObjects下面,并将一个索引向上推。如果显示列表中已有卡片,可以使用更改索引

var卡片列表:数组;
var cardStack:Sprite=新Sprite();
addChild(cardStack);
对于(变量i:int=0;i
最简单的方法是使用removeChildAt(…)从后台移除所有卡,然后使用addChildAt(…)再次添加它们(按正确的顺序)

Usign Mattias示例:

var sortedCardArray:Array = [];    

while (cardContainer.numChildren)
{
     sortedCardArray.push(cardContainer.removeChildAt(0));        
}

/*
/   This assumes that all the values of the cards 
/   are numeric (2, 3, 4, 5, 6, 7, 8, 9, 10, Jack=11, Queen=12, King=13, Ace=14)
*/ 
sortedCardArray.sortOn("variableWithTheCardNumber", Array.NUMERIC | Array.DESCENDING);

var n:int = sortedCardArray.length;
for(var i:int = 0 ; i < n ; i++)
{
    cardContainer.addChild(sortedCardArray[i]);
}
var-sortedCardArray:Array=[];
while(cardContainer.numChildren)
{
sortedCardArray.push(cardContainer.removeChildAt(0));
}
/*
/这假定卡的所有值
/是数字的(2,3,4,5,6,7,8,9,10,Jack=11,Queen=12,King=13,Ace=14)
*/ 
sortedCardArray.sortOn(“随卡号变化”,Array.NUMERIC | Array.DESCENDING);
变量n:int=sortedCardArray.length;
对于(变量i:int=0;i
这是关于排序的,你想要排序算法吗?已经实现了数组的排序,现在只想知道如何将卡片放在舞台上。数组包含什么,对显示对象的引用,字符串?如果你能提供更多关于你要做什么的信息,或者一些代码,也许你会得到你认为有用的答案?然后你需要更具体地说明你的问题是什么。
var sortedCardArray:Array = [];    

while (cardContainer.numChildren)
{
     sortedCardArray.push(cardContainer.removeChildAt(0));        
}

/*
/   This assumes that all the values of the cards 
/   are numeric (2, 3, 4, 5, 6, 7, 8, 9, 10, Jack=11, Queen=12, King=13, Ace=14)
*/ 
sortedCardArray.sortOn("variableWithTheCardNumber", Array.NUMERIC | Array.DESCENDING);

var n:int = sortedCardArray.length;
for(var i:int = 0 ; i < n ; i++)
{
    cardContainer.addChild(sortedCardArray[i]);
}