import flash.external.ExternalInterface; class Storage { static var app : Storage; var store: SharedObject; static var started: Boolean = false; public function Storage(){ ExternalInterface.addCallback("set", null, set); ExternalInterface.addCallback("get", null, get); ExternalInterface.addCallback("free", null, free); } public function set(key, value, namespace){ var primeForReHide = false; store = SharedObject.getLocal(namespace); store.onStatus = function(status){ // ExternalInterface.call("alert", status.code == "SharedObject.Flush.Failed"); // ExternalInterface.call("alert", status.code == "SharedObject.Flush.Success"); if(primeForReHide){ primeForReHide = false; ExternalInterface.call("dojo.storage.provider.hideStore"); } } store.data[key] = value; var ret = store.flush(); if(typeof ret == "string"){ ExternalInterface.call("dojo.storage.provider.unHideStore"); primeForReHide = true; } return store.getSize(namespace); } public function get(key, namespace){ store = SharedObject.getLocal(namespace); return store.data[key]; } public function free(namespace){ return SharedObject.getDiskUsage(namespace); } static function main(mc){ app = new Storage(); if(!started){ ExternalInterface.call("dojo.storage.provider.storageOnLoad"); started = true; } } }