2012-12-03 143 views
-1

我正在做閃光燈簡單的格鬥遊戲,使用ActionScript 2(我知道AS3是更好的方式,但現在改變是不是一種選擇,我的下一個項目將其他變量在as3我發誓)。使用字符串變量作爲路徑來訪問AS 2

事情是這樣的,我有一個「Player」對象,根據給定的參數,它被附加了一個名爲「player1」或「player2」的movieclip。正確的實例名稱存儲在名爲PlayerName的變量中。例如:

var character:Player = new Player(1); 

此代碼將創建一個Player對象。由於數字「1」,構造函數會將PlayerName變量設置爲字符串「player1」。最後,構造函數還應該將一個名爲「player1」的影片剪輯附加到根目錄。

我解決了附着影片剪輯的命名這樣做:

_root.attachMovie(ID, this["PlayerName"], _root.getNextHighestDepth()); 

現在有類似的想法,我想解決以下問題(這是我的問題):說我想搬到我最近催生movieclip(或訪問它的任何屬性),我如何在MC的路徑中使用字符串PlayerName?我的直覺是要做到這一點:

_root.PlayerName._x +=1; 

_root.(this["PlayerName"])._x +=1; 

希望當Flash製作,這種[「PlayerName」]會變成存儲的字符串,但是這顯然是行不通的。我真的堅持在這裏,我用來做這一切在PHP的時候,我的意思是,如果這是PHP我會使用這樣的:

_root.$PlayerName._x +=1; 

有什麼建議?你如何做這項工作?安裝時,它我能想到幾個解決方法,即,存儲於剪輯的引用:

clip = _root.attachMovie(.... 

然後通過夾訪問它的屬性(clip._x + = 1),但我感覺更舒適如果我知道如何在PHP中做到這一點使用的變量在路由一樣..不是說我太在意,這只是在其他情況下,這種「夾」變通辦法可能無法正常工作。

請記住,我有點新的動作腳本面向對象,哈哈,也許這完全是瘋了,有人這樣做了一些其他的方式。

感謝您的時間!

+0

嘿,我在AS2中存儲的字符串,然後使用他們的文件路徑,http://ffiles.com/flash/web_applications_and_data/download_manager_16slots_3567.html包括所有的源代碼..基本上文本文件進行了下載管理器有一串路徑,然後Flash會將這些路徑讀入變量以轉到下載鏈接...瀏覽它應該被使用。 – joshua

回答

0

不需要使用「x」,因爲這不是字符[NAME]它自己的位置。

_root.PlayerName._x +=1; //dont need the x value 

試着這麼做:

 _root.PlayerName +"1"; //from memory should =: PlayerName1 

    trace("player"+1);// just type this as a test 
0

沒關係,我發現如何做到這一點,還是要謝謝你。如果有其他人遇到同樣的疑問,這是你如何做到這一點:

要告訴閃光,你將使用變量內的STRING作爲路徑,你需要使用方括號。現在,這個可以得到一個有點混亂,至少對我來說,東陽當你使用括號,你不應該使用一個點。你會想,如果變量被稱爲PlayerName,並且de MC的屬性的路徑是_root.PlayerName。_x,該語法爲:

_root.[PlayerName]._x +=1; 

但是,這是錯誤的,不工作。至少這是我迄今爲止收集到的。現在,爲了使它工作,你需要擺脫第一個括號之前的點,在第二個之後它可以。不知道這是正確的,但它似乎工作,不妨一試:

_root[PlayerName]._x +=1; 

這並有效地工作,它訪問名爲「影片剪輯的_x屬性什麼 - 是 - 裏面最PlayerName變量「並將其加1。我發現這個問題的原因是因爲根後沒有點,它看起來好像你是在訪問根變量,就好像它是一個數組一樣,並且這是沒有意義的,因爲PlayerName wasn不存儲在根目錄....無論如何,我不知道如何或爲什麼,但這似乎工作。希望能幫助到你。

0

_root[variableName]._x是一個路徑中使用變量的正確方法。

相關問題