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