我正在尝试在as3 swf和它加载的as2 swf之间共享数据。问题是,我似乎无法让我的as2 swf读取as3 swf编写的localshared对象。当我尝试获取对共享对象的引用时,它只返回undefined
// AS3
_SharedObj.objectEncoding = ObjectEncoding.AMF0;
_SharedObj.data.blah = 'str';
_SharedObj.flush(500);
// ... some code to handle the flush status. I verified that the values were flushed.
// AS2
var so = SharedObject.getLocal('somestr', '/');
trace(so); // undefined!
我在这里不知所措。我可以从AS3读取AS2共享对象,但我不能这样做。我已经验证两者都引用相同的路径'/'(特别是localhost,我甚至检查了文件系统中的物理文件, - 它在我的mac上的#SharedObjects目录的#localhost目录中)objectEncoding设置为使用AS2 AMF格式。
文档特别说要设置此编码以允许as2访问同一个共享对象,所以我认为这意味着这是可能的。
有人有什么想法吗?
答案 0 :(得分:2)
使用FlashDevelop时,无法确定哪些不适合您,以下代码对我来说非常适合:
//AS3
var so : SharedObject = SharedObject.getLocal('somestr', '/');
so.objectEncoding = ObjectEncoding.AMF0;
so.data.blah = 'str';
so.flush();
//AS2
var so = SharedObject.getLocal('somestr', '/');
trace(so.data.blah); // str
答案 1 :(得分:0)
您的问题是为Flash Player生成的swf id,并由它用于SharedObject使用。您没有在代码中看到这一点,但是当您搜索SharedObject文件时,您会看到它。这是安全功能。我不知道有任何解决方法。
答案 2 :(得分:0)
我遇到了类似的问题 - 我们最终选择了使用AS2 SWF读取/编写LSO的令人发指的路线,并通过JavaScript / ExternalConnection与AS3 SWF进行通信。这很糟糕,但它可靠地运作。
答案 3 :(得分:0)
我有同样的问题,我认为Dudi上面的答案是要走的路 - 我在调用SharedObject.getLocal()之后在我的代码中添加了以下行,并且我的AS2 swf能够加载我的AS3编写的共享对象。
so.objectEncoding = ObjectEncoding.AMF0
谢谢杜迪!