我試圖修改另一個類中的Object
。所以,我有這樣的事情:如何在ActionScript中通過引用傳遞?
MainClass.as:
..
var myObject:Object = new Object();
Class2_Instance.get_JSON(myObject);
trace(myObject.id); // output: undefined. whereas it should be 42. see below.
..
Class2.as
public function get_JSON(url:String , the_object:Object)
{
var request:URLRequest = new URLRequest(url);
var variables:URLLoader = new URLLoader();
variables.dataFormat = URLLoaderDataFormat.TEXT;
variables.addEventListener(Event.COMPLETE, Complete_Handler_JSON(the_object));
try
{
variables.load(request);
}
catch (error:Error)
{
trace("Unable to load URL: " + error);
}
}
function Complete_Handler_JSON(the_object:Object):Function
{
return function(event:Event):void
{
var loader:URLLoader = URLLoader(event.target);
the_object = JSON.parse(loader.data);
trace(the_object.id); //returns 42.
};
}
所以JSON操作中的Class2正確執行,並將其分配的.parse()
值爲the_object
,但我認爲有些東西我不明白與AS的傳遞參考邏輯。因爲我期待MainClass中的myObject
也會改變。
我應該怎麼做直接修改函數參數(myObject)的值?
謝謝!
對象由默認的引用傳遞。 the_object不是myObject。在Class2_Method中創建它之後嘗試返回the_object。你可能會發現,從長遠來看,你最好採用另一種設計而不是靜態方法。 – 2013-05-08 14:32:00
@AmyBlankenship謝謝,今天我在從CompleteHandler返回時遇到了一些困難(因爲他們等待URLRequest完成,「異步」是我猜測的術語),所以我試圖找到一種沒有返回的方式。你是什麼意思的非靜態方法?我想我應該編輯我的問題來添加實際的代碼。 – void 2013-05-08 14:33:56
我真的很困惑。如果the_object不是myObject,那麼它是如何「通過引用」?在Adobe.com手冊中,它說myObject的價值會改變,但它不會:/我不能從CompleteHandler返回。那麼我將如何保存JSON數組? – void 2013-05-08 15:00:01