2011-06-23 26 views
2

我有一個JSON對象,我不知道一些在編譯時的值,但我知道,所有的對象都將在運行時有效。因此,在下面的示例中,第一個跟蹤將輸出「50」,我希望第二個跟蹤輸出「100」,即在運行時定義的someObject.someparam的值。這可能嗎?謝謝AS3從JSON字符串評價爲研究對象

var plan:Object = { "testParam": 50, "testParam2": "someObject.someParam" } 
var someObject:Object = {"someParam": 100}// this actually doesn't get defined until runtime 

trace ("testParam " + plan.testParam); 
trace ("testParam2 " + someSortOfInterpreter(plan.testParam2); 

回答

1

對於我爲什麼使用「JSON對象」這沒有多大意義。 JSON是基於文本的符號,稍後可以用您正在使用的特定編碼語言進行解釋。

因此,假設您的JSON字符串居然是:

var jsonString:String = '{ 
    "testParam": 50, 
    "testParam2": "someObject.someParam" 
}'; 

你可能只是離開了「testParam」物業完全,在編譯的時候,然後解析字符串並設置該屬性在運行時。

開始:

var jsonString:String = '{ 
    "testParam": 50 
}'; 

則:

var plan:Object = JSON.decode (jsonString); 
plan.testParam2 = someObject.testParam; 

這是假設你正在使用的as3coreLib JSON類JSON字符串解碼。

+0

嗯,我們似乎有一個脫節。我理解你對這個字符串的第一點。但是這裏的重點是我必須在編譯時設置testParam2。例如,在編譯時,我可能想要將param2設置爲函數名稱。然後,當我讀取json文件時,我會像處理函數一樣處理它,如:jsonString.testParam2(arguments);但顯然我需要一些介入。 – dt1000

0

對象是動態的,它沒有存在你在運行時創建它。

var someObject:Object = { }; // Empty object with nothing defined in it 

trace(someObject.someParam); // Traces out "undefined" 

您還可以查看是否已設置

if (someObject.someParam != undefined) 

您可以設置它,只要你想

someObject.someParam = 100; 

,現在,它已經被設置之後,它會正確跟蹤

trace(someObject.someParam); // Traces out 100 

這是你遇到的麻煩嗎?如果沒有,也許你可以給我們更多關於你的問題的信息。

+0

在這裏更改和重申,這可能會解決我的問題: http://stackoverflow.com/questions/6461591/as3-function-pointer – dt1000