2009-02-11 104 views
2

我有一個想要訪問的嵌套影片剪輯實例。影片剪輯的路徑由兩個變量(類似於行和列)定義。動態訪問Flash動作中的嵌套影片剪輯2

我已經動態訪問這樣的父影片剪輯:

的eval(「行」 + ActiveRow)

現在我要訪問的行中的一個(#)的孩子叫設(# )動態。

以下是在完成任務我最好的猜測(沒有一個工程):

變種我:數;

的eval( 「行」 + ActiveRow + 「讓」 + I) 或 的eval( 「行」 + ActiveRow).eval( 「讓」 +我)

非常感謝你的努力和可能的解決方案..

回答

8

你可以嘗試

this["row" + ActiveRow]["let" + i] 

什麼會更好,雖然是如果當你創建實例,你把它們放在一個數組...所以也許

var rowClips : Array = []; 

for (var i : int = 0; i < 10; i++) 
{ 
    var row : MovieClip = this.createEmptyMovieClip("row" + i, i); 

    rowClips.push(row); 
} 

然後你可以通過

rowClips[i]; 

顯然,根據情況把它可能有不同的邏輯來增加你的影片剪輯到一個數組,但基本上就是以引用存儲到您的影片剪輯,一個好得多的辦法。

+0

我將爲剪輯使用一個數組。 – Bryan 2009-02-12 21:54:35

1

一旦您訪問父級影片剪輯,只需索引到子級。 ActionScript 2不要求您使用eval函數查找動態屬性。只需使用該對象和[](數組)運算符來索引所需的變量。

如果你的「行」的對象是在當前影片剪輯的根,你可以簡單地使用_root[ "row" + ActiveRow ][ "let" + i ]

不過,既然你已經通過eval("row"+ActiveRow)擁有初始影片剪輯,您可以使用這個對象來獲得一個新的水平下降。例如,eval("row" + ActiveRow)[ "let" + i ]

Flash的JavaScript的大量借鑑,而像JavaScript,每個對象基本上是一個哈希表。使用點運算符等同於使用固定字符串的[](數組)運算符。

+0

感謝您的解釋。散列表是有意義的。 – Bryan 2009-02-12 21:54:00

0

首先,好像你正在使用的表格數據結構,所以一個簡單的方法是創建一個二維數組和只儲存影片剪輯在那裏。然後你可以通過索引來查找。

另外,你的名字每個影片剪輯(使用name屬性),並使用getChildByName。

即getChildByName( 「行」 + I).getChildByName( 「列」 + i)中。