2017-01-24 18 views
1

Я пытаюсь создать приложение для Android, созданное с помощью Adobe Flash Actionscript 3. Я хотел, чтобы каждый пользователь приложения вводил свое имя в начале приложения, затем у него есть возможность сохранить их прогресс в текущем кадре (и он будет сохранен в слот для сохранения или аналогичный). Однако проблема возникает, когда другой пользователь собирается использовать приложение, он/она должен ввести отдельное имя пользователя, и он/она может сэкономить в любое время (и загрузить его/ее отличный ход загрузки, отличный от предыдущего пользователя). И это продолжается.AS3/AIR Сохранить/загрузить несколько имен пользователей с помощью SharedObject

Я новичок в программировании, и надеюсь, вы могли бы мне помочь. Любые предложения будут оценены. Благодаря!

Это мой код для создания имени пользователя и его сохранения:

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

ОБНОВЛЕНО EDIT 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); 
} 
+0

Ну, если вы не можете делать базы данных, вам необходимо ввести имя пользователя, добавленное в файл save вместе со своим фреймом. что вам нужен еще один слой объекта над 'mySharedObject.data', который зависит от пользователя. – Vesper

+0

@ Vesper вы могли бы дать мне пример кода? Спасибо – niagrafallsxxx

+0

'mySharedObject.data.users [i] .currentframe', где' i' должен быть зависимым от пользователя и храниться где-то при загрузке. – Vesper

ответ

0

Я рекомендую вам использовать Data Base SQLite для сохранения данных можно найти всю документацию здесь Manipulating SQL database data Ну это немного больше осложнит, но работает, как есть таблицы в Excel.

+0

Я не пробовал SQLite :( – niagrafallsxxx

+0

Вы должны попробовать и будете лучше для будущих проектов. –

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

Спасибо, я добираюсь туда, хотя у меня все еще есть некоторые вопросы. Во-первых, в вашем коде, где я мог бы вставить часть, имя экземпляра входа пользователя txtbox (например, boxOne) может быть вставлено? Во-вторых, возможно ли иметь «идентичное» имя пользователя или оно будет иметь ошибку? Наконец, возможно ли иметь список «сохраненных слотов», содержит имена пользователей и временные метки, когда они были сохранены? Еще раз большое спасибо! – niagrafallsxxx

+0

Вы можете заменить имя пользователя вашим boxOne.text, если оно доступно повсюду, или сохранить его текст в переменной. Идентичные имена пользователей идентичны и будут рассматриваться как один пользователь. Да, вы можете прочитать все сохраненные имена с помощью> для (aName: String в SO.data.users) – Organis

+0

будет ли это выглядеть как var userName: String = boxOne.text? – niagrafallsxxx