2

我正在尝试在它加载的 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 访问相同的共享对象,所以我认为这意味着这是可能的。

有人有想法么?

4

4 回答 4

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
于 2010-06-21T19:02:27.757 回答
0

我有同样的问题,我认为 Dudi 上面的答案是要走的路——我在调用 SharedObject.getLocal() 之后将以下行添加到我的代码中,并且我的 AS2 swf 能够加载我的 AS3 编写的共享对象。

so.objectEncoding = ObjectEncoding.AMF0

谢谢杜迪!

于 2011-12-05T15:36:14.957 回答
0

您的问题是为 Flash Player 生成的 swf id 并由它用于 SharedObject 使用。您在代码中看不到这一点,但是当您搜索 SharedObject 文件时,您会看到它。那是安全功能。我不知道有什么解决方法。

于 2009-10-14T10:43:40.307 回答
0

我遇到了一个类似的问题——我们最终走上了用 AS2 SWF 读/写 LSO 并通过 JavaScript/ExternalConnection 与 AS3 SWF 对话的令人发指的路线。这很糟糕,但它工作可靠。

于 2009-10-14T14:23:07.890 回答