1

プログラムでaddChildを使用する際に問題が発生しました。ドキュメント・クラスは次のようになります。

public function gridtest()
    {
        turn++;
        var plusX = 1;
        var plusY = 0;

        trace ("game started");

        var i;
        var j;

        for (i = 0; i < 5; i++)
        {
            trace ("first for loop");

            for (j = 0; j < 8; j++)
            {
                gridbutton = new GridButton();

                gridbutton.x += plusX;
                gridbutton.y += plusY;
                gridbutton.GBID = (i*10)+ j;

                trace ("created button at " + plusX + "," + plusY);

                addChild(gridbutton);
                GBList.push(gridbutton);
                trace("grid button number " + i + j + " added");
                plusX += 92.5;
            }

            plusY += 61.5;
            plusX = 1;
        }
    }

メイン関数gridtest()に1つのaddChildがありますが、これは正常に機能しますが、ここの2番目の関数にもう1つあります(同じドキュメントです)。

            static function NewUnit(locX, locY)
    {
    unit = new Unit(locX, locY);
    unit.Set_ID(UnitList.length);
    addChild(unit);
    UnitList.push(Unit);
    }

エラー1180が表示されます:おそらく未定義のメソッドaddChildを呼び出しますが、関数が静的であることに関係がありますか?それともまったく別のものですか。

4

1 に答える 1

4

addChildは非静的関数です。静的関数と非静的関数の間の相互作用は使用できません。最初にObjectのインスタンスを参照し、そのインスタンスから関数を呼び出す必要があります。trace(this);静的機能をチェックインしてください。

オブジェクトaddChildが必要な場合。追加する親のパラメータを追加する必要があります。

static function NewUnit(locX:Number, locY:Number, parent:DisplayObjectContainer)
{
    unit = new Unit(locX, locY);
    unit.Set_ID(UnitList.length);
    parent.addChild(unit);
    UnitList.push(Unit);
}
于 2013-02-12T12:19:22.327 に答える