如何验证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(例如,当它被禁用时),但那将是另一个问题......
答案 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
}