验证AS3 SharedObject数据的属性是否存在

时间:2011-01-31 14:35:15

标签: flash actionscript-3 cookies shared

如何验证SharedObject的某些属性是否存在?换句话说,我想确保从我的本地SharedObject读取一些合理的东西(第一次加载swf时不应该有任何好处)

我将从http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/net/SharedObject.html

上找到的信息出发

假设我定义了

var my_so:SharedObject = SharedObject.getLocal("superfoo");

现在,如果我已经在my_so.data.foobar下获得了一些东西,我想在我的应用程序中使用它。 (myapp.myfoo在此之前已经有一个默认值)

if (my_so.data.foobar != null) myapp.myfoo=my_so.data.foobar;

这似乎挂在了Flash 10.1上。我错过了什么?

编辑:感谢您的帮助,问题得到解决。 :)

但是,很高兴看到对SharedObject进行此类检查的惯用方法。我发现了很多教导如何使用SharedObject的例子,但是他们似乎忽略了这样一个事实:你需要检查一下你是否在其中保存了任何有价值的东西。这就是第一次加载.swf时发生的事情。另一个问题是检查一个是否成功实例化了SharedObject(例如,当它被禁用时),但那将是另一个问题......

2 个答案:

答案 0 :(得分:6)

我怀疑你遇到了null与未定义的问题。

我会尝试使用hasOwnProperty方法:

if (my_so.data.hasOwnProperty("foobar")) myapp.myfoo=my_so.data.foobar;

有几种方法可以确定对象是否具有特定属性,但hasOwnProperty()可能是最好的方法。

答案 1 :(得分:3)

我更喜欢:

if ("foo" in someObject)
{
    // Do stuff
}