Actionscript 3 引用共享对象AS3

Actionscript 3 引用共享对象AS3,actionscript-3,flash,actionscript,Actionscript 3,Flash,Actionscript,我试图引用一个共享对象(一个保存数据的对象),但每当我尝试引用时,就会发生崩溃 此代码工作正常: var var1:Object = { value:1 }; var varRef:Object = var1; if(var1.value == 1) { varRef.value = 50; } trace(varRef.value); // outputs 50; trace(var1.value); // outputs 50; 但当我尝试使用共享对象时,它不起作用 impor

我试图引用一个共享对象(一个保存数据的对象),但每当我尝试引用时,就会发生崩溃

此代码工作正常:

var var1:Object = { value:1 };
var varRef:Object = var1;

if(var1.value == 1) {
    varRef.value = 50;
}

trace(varRef.value); // outputs 50;
trace(var1.value); // outputs 50;
但当我尝试使用共享对象时,它不起作用

import flash.net.SharedObject;
var iapso:SharedObject = SharedObject.getLocal("purchases");
var varRef:Object = iapso.data.testing;

varRef = 90
trace ("The shared value is " + iapso.data.testing);
trace ("This should mirror it" + varRef);
如果你能解决这个问题,请发布一个固定版本


谢谢。

您必须来自可以取消指针引用的编程背景

var bar:Object = { data:1 };
var foo:Object = bar.data;

trace(foo); //"1"
bar.data = 2;
trace(foo); //"1"
在这种情况下,
varRef
不是
varRef=&iapso
。设置其值不会更改
iapso.data.testing的值

最初,您将
varRef
设置为指向
iapso.data.testing
的指针:

var varRef:Object = iapso.data.testing;
然后,立即将其更改为常量值对象文字
90

varRef = 90;
这不会将
testing
的值设置为90-这会更改
varRef
的值

您可以将
varRef
设置为
iapso.data
,然后设置
testing
,如下所示:

var varRef:Object = iapso.data;
varRef.testing = 90;
然后,将产生以下预期结果:

trace(iapso.data.testing); // 90
trace(varRef.testing); // 90

您必须来自可以取消引用指针的编程背景

var bar:Object = { data:1 };
var foo:Object = bar.data;

trace(foo); //"1"
bar.data = 2;
trace(foo); //"1"
在这种情况下,
varRef
不是
varRef=&iapso
。设置其值不会更改
iapso.data.testing的值

最初,您将
varRef
设置为指向
iapso.data.testing
的指针:

var varRef:Object = iapso.data.testing;
然后,立即将其更改为常量值对象文字
90

varRef = 90;
这不会将
testing
的值设置为90-这会更改
varRef
的值

您可以将
varRef
设置为
iapso.data
,然后设置
testing
,如下所示:

var varRef:Object = iapso.data;
varRef.testing = 90;
然后,将产生以下预期结果:

trace(iapso.data.testing); // 90
trace(varRef.testing); // 90

设置varRef将不会更新iapso.data中的值-数字是复制的,而不是引用的

var bar:Object = { data:1 };
var foo:Object = bar.data;

trace(foo); //"1"
bar.data = 2;
trace(foo); //"1"
如果确实要使用引用,请使用
数据
,例如:

import flash.net.SharedObject;
var iapso:SharedObject = SharedObject.getLocal("purchases");
var varRef:Object = iapso.data;

varRef.testing = 90
trace ("The shared value is " + iapso.data.testing);
trace ("This should mirror it" + varRef.testing);

设置varRef将不会更新iapso.data中的值-数字是复制的,而不是引用的

var bar:Object = { data:1 };
var foo:Object = bar.data;

trace(foo); //"1"
bar.data = 2;
trace(foo); //"1"
如果确实要使用引用,请使用
数据
,例如:

import flash.net.SharedObject;
var iapso:SharedObject = SharedObject.getLocal("purchases");
var varRef:Object = iapso.data;

varRef.testing = 90
trace ("The shared value is " + iapso.data.testing);
trace ("This should mirror it" + varRef.testing);

杰森·斯特格斯,你又干了!回答得很好,杰森·斯特格斯,你又做了一次!回答得很好。