我想创建一个包含动画片段和文本字段的3d数组。这是我的代码:
public function init():void
{
//initalize the arrays
for (var _x:int = 0; _x <= MAX_X; _x++)
{
colArray = new Array();
for (var _y:int = 0; _y <= MAX_Y; _y++)
{
textArray = new Array();
for (var _z:int = 0; _z <= MAX_Z; _z++)
{
var txt:TextField = new TextField();
textArray.push(txt);
}
var mc:MovieClip = new MovieClip();
colArray.push(mc);
}
rowArray.push(colArray);
}
}
public function addBoxes(isUpdate:Boolean):void
{
for (var _y:int = 0; _y <= MAX_Y; _y++)
{
for (var _x:int = 0; _x <= MAX_X; _x++)
{
for (var _z:int = 0; _z <= MAX_Z; _z++)
{
// Create captions
var mcCaption:MovieClip = createMc("captionBox", false);
spSource.addChild(mcCaption);
mcCaption.addEventListener(MouseEvent.MOUSE_DOWN, mcCaptionHandler);
colArray[_x][_y][_z] = mcCaption;
mcCaption.x = nextXpos;
mcCaption.name = "beatCaption_" + _y;
// trace(colArray[_x][_y][_z]);
}
}
}
...
}
我想要一些关于我的动画片段的文字。我怎样才能做到这一点?我的代码给了我错误:TypeError: Error #1010: A term is undefined and has no properties.
这个陈述是错的吗?
colArray[_x][_y][_z] = mcCaption; // mcCaption is a movieclip
答案 0 :(得分:1)
你没有3D数组,因为最里面循环中的textArray
没有被推入colArray
,而是你在那里填充了一个MC。此外,您要求一个错误的数组来检索一个3深度的对象。在您的代码rowArray
中是二维数组(如果你在那里填充textArray
将是3D),colArray
是一维MC的数组,然后你试图引用{{ 1}} - 这个解析为:
colArray[_x][_y][_z]
init()
,无论其值是多少所以,你必须检查你的_y
是否写得正确,因为如果你需要一个3D阵列,你现在就没有。我猜是这样的:
init()
如果您使用public function init():void
{
//initalize the arrays
for (var _x:int = 0; _x <= MAX_X; _x++)
{
colArray = new Array();
for (var _y:int = 0; _y <= MAX_Y; _y++)
{
textArray = new Array();
for (var _z:int = 0; _z <= MAX_Z; _z++)
{
textArray.push(null); // placeholder
}
colArray.push(textArray);
}
rowArray.push(colArray);
}
}
null
将被替换