0

コードは問題をかなりよく示しています、私は無関係なものをすべて切り取りました。

ゲーム開始時に2〜4人の親族を作成する

function createInitialKinsmen()
{
    for (var k:int = 1; k < 3 + Math.round(Math.random() * 2; k++)
    {
        if (k == 1)
        {
            createKinsmen(0);
            trace ("player");
        }
        else
        {
            createKinsmen(1);
            trace ("starting kinsmen");
        }
    }
}

キンズメン作成機能

function createKinsmen(arrivalTypeVar:int)
{
    var newKinsmen = new kinsmen;
    listPanel.kinsmenDivider.addChild(newKinsmen);
    totalKinsmen++;
    totalKinsmenAlive++;
    newKinsmen.name = "kinsmen" + totalKinsmen;
    newKinsmen.arrivalType = arrivalTypeVar;
}

キンズメンクラス

public class kinsmen extends MovieClip
{
    var arrivalType:int;
    function kinsmen()
    {
        trace(this.name);
        if (this.arrivalType = 0)
        {
            trace("player");
        }
        if (this.arrivalType = 1)
        {
            trace("starting kinsmen");
        }
    }
}

出力は次のようになります。

kinsmen1
player
player
kinsmen2
starting kinsmen
starting kinsmen
kinsmen3
starting kinsmen
starting kinsmen
kinsmen4
starting kinsmen
starting kinsmen

しかし、代わりに言う:

kinsmen1
player
player
kinsmen2
player
starting kinsmen
kinsmen3
player
starting kinsmen
kinsmen4
player
starting kinsmen

これは、arrivalType変数が渡されていないことを意味します。ハードコードされた変数を渡すことができるようですが、現時点では、kinsmen movieclip内にアルファ0の正方形があり、そのx位置がコンストラクターのarrivalTypeの値を決定しますが、これは確かに良い習慣ではありません。これを行うためのより良い方法はありますか?

4

1 に答える 1

1

クラスのコンストラクター関数を変更して、とのkinsmenパラメーターを受け入れるようにしたいと思います。arrivalTypename

現在行っているのは、新しいkinsmenオブジェクトを作成し、その後、そのオブジェクトにarrivalType とを設定するnameことです。したがって、コンストラクタコードが実行されると、は0arrivalTypeのデフォルト値になります。int

kinsmenクラスでコンストラクター関数を次のように変更します。

function kinsmen(arrivalType:int, name:String)
{
    this.name = name;
    this.arrivalType = arrivalType;
    if (this.arrivalType == 0)
    {
        trace("player");
    }
    if (this.arrivalType == 1)
    {
        trace("starting kinsmen");
    }
}

そして、オブジェクトが作成された後にと を設定する代わりに、コンストラクターメソッドにcreateKinsmen()の値を渡すように関数を変更します。arrivalTypearrivalTypename

function createKinsmen(arrivalTypeVar:int)
{
    totalKinsmen++;
    totalKinsmenAlive++;
    var newKinsmen = new kinsmen(arrivalTypeVar, "kinsmen" + totalKinsmen);
    listPanel.kinsmenDivider.addChild(newKinsmen);
}
于 2013-02-12T01:42:43.660 に答える