XMLカスタムカードゲームを作成しています。デッキを作成してドラッグ可能にして、別のカードの上にドラッグアンドドロップできるようにしています。ムービークリップの複数のインスタンスの深さの問題
デッキを構築し、ライブラリにあるムービークリップの複数のインスタンスを配置する方法を理解しましたが、カードのそれぞれをドラッグ可能にする方法を見つけられません。現在起こっているのは、デッキの上にあるカードが、そのカードの下をクリックしてもドラッグする唯一のカードだということです。私はsetChildIndex()
を調査しましたが、正しく使用しているとは思いません。
もう1つの問題は、ユーザーがclick_btn(テスト専用の名前)をクリックしてデッキを構築するときです。デッキの構築にはしばらく時間がかかります。
一度ユーザーが最初のカードをクリックしてドラッグするともう一度待ちますか?
ドキュメントクラス(CardGame.as)
package library
{
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class CardGame extends Sprite
{
/*
* variables
*/
private var _xml:XML;
private var _loader:URLLoader;
private var cardArray:Array;
private var activity:Activity;
/*
* constructor
*/
public function CardGame():void
{
_loader = new URLLoader();
_loader.addEventListene(Event.COMPLETE,buildArray);
_loader.load(new URLRequest("library/card.xml"));
click_btn.addEventListener(MouseEvent.CLICK,buildDeck);
}
/*
* metohods
*/
public function buildArray(e:Event):Array
{
cardArray = new Array();
_xml = new XML(_loader.data);
for(var i=0;i<_xml.card.length();i++)
{
if(_xml.card.face[i]=="activity")
{
cardArray.push({id:_xml.card.id[i],face:_xml.card.face[i],category:_xml.card.category[i],point:_xml.card.point[i],value:_xml.card.value[i]});
}
else if(_xml.card.face[i]=="event")
{
cardArray.push({id:_xml.card.id[i],face:_xml.card.face[i],category:_xml.card.category[i],point:_xml.card.point[i],value:_xml.card.value[i]});
}
else
{
trace("no card found");
}
}
return cardArray;
}
public function buildDeck(e:Event):void
{
for(var i=0;i<cardArray.length;i++)
{
if(cardArray[i].face == "activity")
{
activity = new Activity();
activity.x = 200;
activity.y = 150;
activity.id = i;
activity.name = "b"+i;
activity.buttonMode = true;
stage.addChild(activity);
activity.addEventListener(MouseEvent.MOUSE_DOWN,dragStart);
activity.addEventListener(MouseEvent.MOUSE_UP,dragStop);
}
}
}
public function dragStart(e:Event):void
{
activity.parent.setChildIndex(activity, numChildren - 1);
activity.startDrag();
}
public function dragStop(e:Event):void
{
this.stopDrag();
}
}
}
card.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<cardgame>
<card>
<id>1</id>
<face>activity</face>
<catagory>Task</catagory>
<point>2</point>
<value>Change the rule.</value>
</card>
<card>
<id>21</id>
<face>event</face>
<catagory>Injury</catagory>
<point>-2</point>
<value>Injury due to animal/snake/insect bite-count 3.</value>
</card>
</cardgame>
xmlファイルは、実際には64個の活動カードエントリと41件のイベントカードのエントリがありますが、私が作ってそれをダウントリミングそれは簡単です。
私が持っている唯一の問題は、カードIである:-)、ドラッグが今素晴らしい作品ドラッグは他のものの後ろに現れる。それがドラッグされたときに他のすべてのカードの上に表示される方法はありますか?ありがとう – Mike
またMattias、あなたはグラフィックが重くなるのは正しいです。私は単純なボックスを作成し、その場所でそれを使用し、躊躇、優れたアイデア:-) – Mike
私はあなたのコードを実行するときに、その問題は全くありません。私はあなたのコードを動作させるためにいくつかのことを変えなければならなかった。私はあなたがそれを試すことができるように私のコードを掲載します。 – Mattias