我的猜测是,舞台上没有实例名称为mc_wall
的实例,这就是为什么您会收到未定义的属性错误。如果没有实例名称,那么您无法通过实例名称访问它,对吧?
您将遇到的下一个问题是您无法通过代码修改时间轴DisplayObject的名称。所以,你会得到这个错误,即使你没有命名的东西,然后尝试将它从该实例名称改为:
The name property of a Timeline-placed object cannot be modified.
我的想法是,你可能需要了解的阵列,而不是使用name
属性作为您管理影片剪辑集合(例如墙壁)的方式。例如,如果我确实在时间轴上有它们,我会将它们放入另一个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
}
}
那些墙在你的fla中是否有实例名?或者是当前为它们全部为空的实例名称? – prototypical 2013-05-05 19:55:34
它目前全部都是空的。 – 2013-05-05 20:00:26
我看到两个问题。首先,我没有看到具有相同实例名称的所有影片剪辑的优势。其次,即使有实例名称,我也没有看到优势。 – Marty 2013-05-05 23:39:49