我的猜測是,舞臺上沒有實例名稱爲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