4

我正在使用此方法将共享对象保存在特定位置,但我无法提供路径

SharedObject.getLocal("save","how to give path here for window");

这给出了以下错误

Error: Error #2130: Unable to flush SharedObject.
at Error$/throwError()
at flash.net::SharedObject/flush()
at OnlineDiagramEditor/SaveData_mouseDownHandler()[C:\Users\ruchidod\Adobe Flash Builder 4.6\OnlineDiagramEditor\src\OnlineDiagramEditor.mxml:3240]
at OnlineDiagramEditor/__SaveData_mouseDown()[C:\Users\ruchidod\Adobe Flash Builder 4.6\OnlineDiagramEditor\src\OnlineDiagramEditor.mxml:3522]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:13152]
at mx.managers::SystemManager/mouseEventHandler()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\SystemManager.as:2918]

有时它会给

Error: Error #2134: Cannot create SharedObject.
at flash.net::SharedObject$/getLocal()
at OnlineDiagramEditor/SaveData_mouseDownHandler()[C:\Users\ruchidod\Adobe Flash Builder 4.6\OnlineDiagramEditor\src\OnlineDiagramEditor.mxml:3236]
at OnlineDiagramEditor/__SaveData_mouseDown()[C:\Users\ruchidod\Adobe Flash Builder 4.6\OnlineDiagramEditor\src\OnlineDiagramEditor.mxml:3522]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:13152]
at mx.managers::SystemManager/mouseEventHandler()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\SystemManager.as:2918]
4

1 回答 1

5

SharedObjects 会自动保存在预定义的位置,它们不是跨域的,这意味着每个域只能读取自己的 SO。

localPath只是一个参数,它定义了 Flash 播放器应将 SO 保存在预定义位置的哪个子文件夹中。默认情况下,这指的是保存 SO 本身的 SWF。

localPath: String [optional]- 一个字符串,它指定创建共享对象的 SWF 文件的完整或部分路径,并确定共享对象在本地存储的位置。默认值为完整路径。

还:

尽管该localPath参数是可选的,但您应该考虑一下它的使用,尤其是在其他 SWF 文件需要访问共享对象时。如果共享对象中的数据特定于一个不会移动到另一个位置的 SWF 文件,则使用默认值是有意义的。如果其他 SWF 文件需要访问共享对象,或者创建共享对象的 SWF 文件稍后将被移动,则此参数的值会影响任何 SWF 文件是否能够访问共享对象。例如,如果您创建一个共享对象,并将 localPath 设置为 SWF 文件的完整路径的默认值,则没有其他 SWF 文件可以访问该共享对象。如果您稍后将原始 SWF 文件移动到另一个位置,则即使该 SWF 文件也无法访问已存储在共享对象中的数据。

因此,如果您在同一个域上有多个 SWF需要访问同一个 SO,则需要getLocal()为每个 SWF 提供相同的路径。

http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00001508.html


例如:

在 Windows 中,SO 存储在%APPDATA%\Macromedia\Flash Player\#SharedObjects\.

这是您的用户的子文件夹,例如5D3RT21F.

然后我们有一个生成 SO 文件的域的子文件夹,例如www.flickr.com.

然后是几个子文件夹来反映域上 SWF 的相对路径,比如\apps\slideshow\show.swf\,你可以在这里找到 SO 文件。

但是,如果您指定/( root ),localPath那么您将直接在其中找到 SO 文件,www.flickr.com并且同一域上的其他 SWF 将自由访问它。

于 2013-02-26T08:37:14.623 回答