addChild在函数内部不起作用

时间:2013-02-12 12:10:23

标签: actionscript-3 flash-cs5

我在程序中使用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,它是否与静态函数有关?或者它完全是另一回事。

1 个答案:

答案 0 :(得分: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);
}