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



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

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

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

function handleClick(Event:MouseEvent):void
{
    var myFirstVariable = boxOne.text;
    boxTwo.text = myFirstVariable;
    gotoAndStop("opening_scene")
}
myButton2.addEventListener(MouseEvent.MOUSE_UP, handleClick);

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

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

我建议您使用SQLite数据库来保存数据 可以在这里找到所有文档 操作 SQL 数据库数据 好吧有点复杂,但就像在Excel中拥有表格一样。

正如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);
}

最新更新