gpt4 book ai didi

actionscript-3 - 如何在 ActionScript 中通过引用传递?

转载 作者:行者123 更新时间:2023-12-02 07:36:03 25 4
gpt4 key购买 nike

我正在尝试修改另一个类中的 Object。所以我有这样的东西:

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.as 中的 myObject 也会改变。

直接修改函数参数(myObject)的值应该怎么做?

谢谢!

最佳答案

问题出在事件处理程序的这一行中:

the_object = JSON.parse(loader.data);

执行此操作的那一刻,您就不再处理传递给方法的对象。您正在为名为 the_object 的局部变量分配一个新值。了解对象不是按引用传递很重要 - 对象引用按值传递。因此,您方法中的 the_object引用的副本。当您分配新值时,该副本将被不同的引用覆盖。

解决方案是通过引用传递引用——这与C++等语言中双指针的概念有关,也称为双重间接寻址。我不确定这在 ActionScript 中是否可行。

更好的解决方案,将反序列化后的对象作为返回值返回即可。

关于actionscript-3 - 如何在 ActionScript 中通过引用传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16443296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com