2017-07-29 89 views
0

im为Android和ios开发Air应用程序并使用工作人员im在后台执行大量任务(两个swfs),我希望在工作人员swf中拥有SharedObjects背景工作者),这可能吗?或者数据会丢失?你需要写相同的共享对象BackGrounde Worker中的Sharedobject as3 Air(android,ios)

+1

如有疑问写入数据,使用主线程与应该存储的数据进行交互。我不记得SharedObjects和工作人员有任何限制,但从未尝试过测试。 – Vesper

回答

0

一切都是指定两个相同path

mySO = SharedObject.getLocal("myObjectFile","/"); 

更多的信息在这里http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7d80.html

这里是一个简短的代码,以确定这些数据获得了”不会丢失,工作人员实际上正在做同样的事情,因为多个Flash播放器同时运行。只要运行2个或更多的SWF,然后查看结果:

import flash.net.SharedObject; 
var iterations:int = 100 

function witeToSo() 
{ 
    var mySO:SharedObject = SharedObject.getLocal("myObjectFile", "/"); 

    if (iterations > 0) 
    { 
     if (!mySO.data.str) mySO.data.str = "" 

     mySO.data.str += int(Math.random() * 10); 

     iterations--; 
    } 
    txt.text = "str: " + mySO.data.str + " symbolsTotal:" + (mySO.data.str.length) + "\n"; 

    setTimeout(witeToSo, Math.random()*100); 
} 

setTimeout(witeToSo, 2000); 

你也需要考虑如何在情况下,你的线程同步要在特定的顺序