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()中有一个addChild,它工作正常,但另一个在第二个函数中(仍然是同一个文档):

            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 回答