共享对象位置(sharedObject location)

2019-07-20 13:23发布

我使用这个方法保存在特定位置的共享对象,但我不能给路径

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]

Answer 1:

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

localPath仅仅是定义了预定义的位置Flash播放器的子文件夹应保存SO的参数。 这是,默认情况下,提及要保存该SO本身的SWF。

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

也:

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

所以,如果你需要SO访问相同的同一域已经多次SWF,你需要给到一个路径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文件。

但是,如果你指定/ )作为localPath ,那么你会发现就是直接在文件www.flickr.com和其他SWF在同一个域将自由访问它。



文章来源: sharedObject location