AS3

2011-07-02 10 views
4

私はすべてが大丈夫ですが、私は次のようにカードのスタックを作成することはできませんよカードゲームを作成していますでソリティアスタックに似たカードのスタックを作成します。 Spadesの4,5,6,7のような配列では、優先順位の最も低いカードを上に置き、優先順位の高いカードを最初のカードの後ろに配置します。AS3

どのようにこれを達成できますか?

+0

それは、仕分けについてですが、あなたがアルゴリズムをソートしたいですか? – rptwsthi

+0

はすでに配列のソートを実装しています。今はステージ上にカードを配置する方法を知りたいだけです。 –

+1

表示オブジェクト、文字列への参照にはどのような配列が含まれていますか?おそらく、あなたがしようとしていること、そしておそらくいくつかのコードに関する詳細情報を提供すれば、役に立つと思われる回答が得られるでしょうか? – shanethehat

答えて

1

DisplayObjects(あなたのビジュアルカード)を作成する方法を知っているので、私の答えでは言及しません。

私はホルダースプライトを作成し、それにカードを追加して、カードの深さの順序を制御できるようにしました。 addChild(前のdisplayObjectを追加)またはaddChildAt(希望の位置にdisplayObjectを追加)のいずれかを使用して、スタックスプライトにカードを追加します。 addChildAtを使用し、インデックスとして0を使用すると、他のすべてのdisplayObjectsの下にそれを追加し、その1つのインデックスを押し上げます。すでにディスプレイリストにカードがある場合は、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]); 
} 
+3

次に、あなたの問題がより具体的である必要があります。 – Mattias

1

最も簡単な方法は、は、addChildAt(...)を使用して、removeChildAt(...)を使用して、ステージからすべてのカードを削除し、(正しい順序で)再びそれらを追加することです。

Usignマティアス例:

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]); 
}