2017-07-29 2 views
0

im Développer une application Air pour android et ios et im en utilisant les travailleurs aussi préformer une tâche lourde en arrière-plan (deux swfs), je veux avoir SharedObjects dans le SWF de l'ouvrier (le travailleur de fond), est-ce possible? ou les données seront perdues?Sharedobject dans BackGrounde Worker as3 Air (android, ios)

+1

En cas de doute, utilisez thread principal interagir avec les données qui devraient être stockées. Je ne me souviens pas qu'il y ait une restriction sur SharedObjects et les travailleurs, mais je n'ai jamais essayé de tester. – Vesper

Répondre

0

Tout ce que vous devez écrire dans le même SharedObject est de spécifier le même path pour les deux comme

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

plus d'infos ici http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7d80.html

Voici un code court pour vous assurer que les données ont gagné » t être perdu, les travailleurs font en fait la même chose que plusieurs joueurs flash ont couru simultanément. Il suffit de lancer 2 ou plus swf et voir le résultat:

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); 

vous devez également penser à la façon de synchroniser vos fils au cas où vous voulez écrire les données dans l'ordre spécifique