我的猜测是舞台上没有实例名称为实例的实例mc_wall
,这就是您收到未定义属性错误的原因。如果没有实例名称,那么您无法通过实例名称访问它,对吗?
但是,您将遇到的下一个问题是您不能通过代码修改时间轴 DisplayObject 的名称。因此,即使您确实为它命名,然后尝试从该实例名称更改它,您也会收到此错误:
The name property of a Timeline-placed object cannot be modified.
我的想法是,您可能需要了解数组,而不是将name
属性用作管理 MovieClip 集合(例如墙壁)的方式。
例如,如果我确实将它们放在时间轴上,我会将它们放在另一个 MovieClip 中,基本上将它用作我所有墙壁的容器并将该实例命名为“wall_container”。然后在代码中我会这样做:
var walls:Array = new Array;
for (var index:int = 0;index < wall_container.numChildren;index++)
{
var wall:MovieClip = wall_container.getChildAt(index) as MovieClip;
walls.push(wall);
}
现在,如果我想访问单独的墙,我可以去:
var wall:MovieClip = walls[5] as MovieClip;
或遍历所有墙壁以进行碰撞检查或我可以去的东西:
for (var index:int= 0;index < walls.length;index++)
{
var wall:MovieClip = walls[index] as MovieClip;
wall.x = 500;
wall.y = 200;
// do whatever you want to do with that wall
//check collision ?
if (player.hitTestObject(wall))
{
// handle collision with the wall
}
}