AS3 / AIR使用SharedObject保存/加载多个用户名

时间:2017-01-24 02:42:52

标签: android actionscript-3 flash air save

我正在尝试使用Adobe Flash Actionscript 3创建一个Android应用程序。我希望应用程序的每个用户在应用程序的开头输入他们的名字,然后他们就能够在当前帧中保存他们的进度(和它将被保存到保存槽或类似的)。但是,当另一个用户打算使用该应用程序时,问题就出现了,他/她必须输入一个不同的用户名,并且他/她可以随时保存(并加载他/她不同的加载进度,与之前的用户不同)。它继续。

我是编程的新手,我希望你能帮助我。任何建议将不胜感激。谢谢!

这是我创建用户名并保存的代码:

var so:SharedObject = SharedObject.getLocal("Test");
var userName:String = nameField.text;

if (so.data.users == null)
    so.data.users = new Object();

btnSave.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:MouseEvent):void
{
    if (so.data.users[userName] == null)
    so.data.users[userName] = new Object();
    so.data.users[userName].lastframe = currentFrame;
    so.flush();
    trace(userName);
}

btnLoad.addEventListener(MouseEvent.CLICK, reloadBtnClick);
function reloadBtnClick(e:MouseEvent):void
{
    if (so.data.users[userName] == null)return;
    if (so.data.users[userName].lastFrame == null) return;
    gotoAndStop(so.data.users[userName].lastFrame);
    trace(userName);
}

更新编辑2:这是我保存和加载的代码。仍然没有工作:

props.put(org.apache.kafka.clients.producer.ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, config.getString("obs_q_and_a_db.kafka.metadataBrokerList"))
props.put(org.apache.kafka.clients.producer.ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, classOf[StringSerializer])
props.put(org.apache.kafka.clients.producer.ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, classOf[StringSerializer])
props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SSL")
props.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, "mySslFolder/answersapi.kafka.client.keystore.jks")
props.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, "sslTruststorePassword"))
props.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, "mySslFolder/answersapi.kafka.client.truststore.jks")
props.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, "sslKeystorePassword")
props.put(SslConfigs.SSL_KEY_PASSWORD_CONFIG, "sslKeyPassword")
props.setProperty("metadata.broker.list",  "kafkaURL:9093"))
props.setProperty("serializer.class", serializerClass)
props.setProperty("message.send.max.retries", maxRetries.toString)
props.setProperty("request.required.acks", requiredAcks.toString)
props.setProperty("producer.type", producerType)
props.setProperty("batch.num.messages", batchNumMessages.toString)

2 个答案:

答案 0 :(得分:0)

我建议您使用SQLite数据库来保存您的数据可以在这里查找所有文档Manipulating SQL database data好一点有点复杂,但就像在Excel中有表一样。

答案 1 :(得分:0)

正如Vesper建议的那样,您需要拥有存储所有用户的存储空间。例如:

// Put user name here.
var userName:String;

var SO:SharedObject = SharedObject.getLocal("save");

// Create storage for users.
if (SO.data.users == null) SO.data.users = new Object();

// ...

function saveCurrentFrame(event:MouseEvent):void
{
    // Create storage for current user by their name.
    if (SO.data.users[userName] == null) SO.data.users[userName] = new Object();

    SO.data.users[userName].lastframe = currentFrame;
    SO.flush();
}

function getLastFrame(event:MouseEvent):void
{
    trace(1);
    // Skip this if there's no record for 
    if (SO.data.users[userName] == null) return;
    trace(2);
    if (SO.data.users[userName].lastFrame == null) return;
    trace(3);

    gotoAndStop(SO.data.users[userName].lastFrame);
    trace(4);
}