PDA

Просмотр полной версии : Shared Object сохранение нескольких логинов


greenhill
28.02.2011, 15:46
Добрый день!
Такая вот задача? запоминать в Shared Object пять последних логинов.

so = SharedObject.getLocal("auth_shared_obj");
so.data.now = new Date().time;
so.data.name = login.text;
so.flush();

Как мне организовать в данном случае сохранение до пяти логинов?
so.data.name = login.text; - данный код просто перезаписывает значение

Спасибо!

gloomyBrain
28.02.2011, 15:59
А в чем проблема?
читаем все записи
если записей меньше 5, дописываем новую
если 5 или больше -

record5 = record4;
record4 = record3;
record3 = record2;
record2 = record1;

record1 = new record;

cleptoman
28.02.2011, 16:03
so.data.logins = new Array();
не?
so может хранить не только простые типы, но и ряд ссылочных..т.е. Object/Array можно смело юзать.

greenhill
28.02.2011, 16:25
А в чем проблема?
Проблема в том, что нет универсальности, может понадобиться хранить 100 записей.

cleptoman, а можете объяснить как правильно использовать в данном случае массив.
У меня есть класс, которые отвечает за запись в шеред обджектс. Задача, каждый раз, когда я захожу в клиент, записывать логин. если я напишу so.data.logins = new Array(); , то это будет постоянное обнуление массива, как тут записать, что-то не соображу?

iNils
28.02.2011, 16:31
if (!so.data.logins) {
so.data.logins = [];
}

in4core
28.02.2011, 16:33
@greenhill эх...

var logins:Array = [];

if(so.data.logins != [] && (so.data.logins as Array).length < 5 )

arr.push(new Log());

so.data.logins = arr;

gloomyBrain
28.02.2011, 17:01
@in4core эх...

// максимальное число логинов
public static const MAX_LOGINS:uint = 5;

// создаем новый массив, если это необходимо
so.logins = (so.logins && so.logins is Array) ? so.logins : [];

// добавляем новую запись в начало массива
var len:int = so.logins.unshift("Новый логин");

// какая теперь должны быть длина у массива?
len = (len < MAX_LOGINS) ? len : MAX_LOGINS;

// удаляем все элементы массива с индексом больше MAX_LOGINS
so.logins.length = len;

greenhill
28.02.2011, 17:04
глупый вопрос :) Спасибо!

in4core
28.02.2011, 17:14
@in4core эх... Ха ха... я не пишу справки, я даю примеры

gloomyBrain
28.02.2011, 17:32
я даю примеры


var a:Array = [];
trace(a == []); // false

Ха ха...
Хоть бы проверяли свои примеры на адекватность

cleptoman
28.02.2011, 17:40
@in4core, я вас записую )