Создайте стопку карт, аналогичную стопке пасьянса в as3 - PullRequest
4 голосов
/ 02 июля 2011

Я создаю карточную игру, все в порядке, но я не могу создать стопку карт следующим образом:

Если у меня есть 4 карты, которые представлены в массиве, например 4,5,67 пиков, тогда я хочу, чтобы карта с наименьшим приоритетом была помещена сверху, а карта с наивысшим приоритетом - позади первой.

Как этого добиться?

Ответы [ 2 ]

1 голос
/ 10 июля 2011

Самый простой способ - удалить все карточки со сцены, используя removeChildAt (...), и добавить их снова (в правильном порядке), используя addChildAt (...).

Пример использования знака Маттиаса:

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]);
}
1 голос
/ 02 июля 2011

Полагаю, вы знаете, как создавать объекты DisplayObject (ваши визуальные карты), поэтому я не буду упоминать об этом в своем ответе.

Я бы создал спрайт-держатель и добавил к нему свои карты, чтобы получить контроль над порядком глубины карт. Вы добавляете карты в стек спрайта либо с помощью addChild (добавляет displayObject впереди), либо addChildAt (добавляет displayObject в нужном месте). Если вы используете addChildAt и используете 0 в качестве индекса, он добавит его ниже всех других объектов displayObject и увеличит индекс на один. Если у вас уже есть карты в списке отображения, вы можете изменить индекс, используя setChildIndex .

var cardList : Array;
var cardStack : Sprite = new Sprite();
addChild(cardStack);

for(var i : int = 0 ; i < cardList.length ; i++)
{
    // adds it at below all displayObject in "cardStack"
    cardStack.addChildAt(cardList[i], 0);
    // adds it on top of all displayObject in "cardStack"
    cardStack.addChild(cardList[i]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...