2013-02-26 135 views
3

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

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

共享对象被自动保存在预定的位置和它们不跨域,这意味着,电子ach域只能读取自己的SO。

localPath只是一个参数,它定义了Flash Player应该保存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将自由访问它。

+0

但在方法第二个参数SharedObject.getLocal(“”,“”);指定路径.. – Devendra 2013-02-26 08:39:42

+0

我已编辑我的答案,以反映 – Teejay 2013-02-26 08:41:19

+0

谢谢@teejay .....但有任何其他方式来存储在特定位置的sava数据? – Devendra 2013-02-26 12:09:40