如何将 MovieClip 放入 3D 数组?
How can I put MovieClip into 3D array?
我想创建包含动画片段和文本字段的 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
你没有 3D 数组,因为最内层循环中的 textArray
没有被推入 colArray
,而是你在其中填充了一个 MC。此外,您要求错误的数组来检索 3 深度对象。在您的代码中,rowArray
是 2D 数组(如果您在其中填充 textArray
,则为 3D),colArray
是 MC 的一维数组,然后您尝试引用 colArray[_x][_y][_z]
- 这个解析为:
- colArray[_x] = 空 Movieclip,创建于
init()
- colArray[_x][_y] = undefined(MC为空,没有属性
_y
不管它的值
- colArray[_x][_y][_z] = 运行时错误,您正在尝试查询未定义的属性。
所以,你必须检查一下你的 init()
是否写对了,因为如果你需要一个 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++)
{
textArray.push(null); // placeholder
}
colArray.push(textArray);
}
rowArray.push(colArray);
}
}
如果你使用rowArray[_x][_y][_z] = mcCaption;
,最内层循环中压入的null
将被替换
我想创建包含动画片段和文本字段的 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
你没有 3D 数组,因为最内层循环中的 textArray
没有被推入 colArray
,而是你在其中填充了一个 MC。此外,您要求错误的数组来检索 3 深度对象。在您的代码中,rowArray
是 2D 数组(如果您在其中填充 textArray
,则为 3D),colArray
是 MC 的一维数组,然后您尝试引用 colArray[_x][_y][_z]
- 这个解析为:
- colArray[_x] = 空 Movieclip,创建于
init()
- colArray[_x][_y] = undefined(MC为空,没有属性
_y
不管它的值 - colArray[_x][_y][_z] = 运行时错误,您正在尝试查询未定义的属性。
所以,你必须检查一下你的 init()
是否写对了,因为如果你需要一个 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++)
{
textArray.push(null); // placeholder
}
colArray.push(textArray);
}
rowArray.push(colArray);
}
}
如果你使用rowArray[_x][_y][_z] = mcCaption;
null
将被替换