Как использовать Cookies во Flash

Декабрь 15th, 2009 автор: Oleg Antipov

Очень часто возникает необходимость сохранять какую-то информацию между сеансами игры. И в этом нам поможет специальные Cookie флеша – shared objects. Вообще конечно это не совсем привычные пользователю куки, т.к. хранятся они не вместе со всеми, а в системных папках флеш-плеера.
Но тем не менее мне привычней считать их просто Куками )

Вот такой класс я использую для записи и чтения Cookies:

 
package aneg 
{ 
    import flash.net.SharedObject;  
 
    public class Cookie 
   { 
        private var _name:String;
        private var _so:SharedObject;
 
        public function Cookie(name:String = "tempCookie") 
	{ 
            _name = name;
            _so = SharedObject.getLocal(name, "/" );
 
        }
 
        // Получить имя cookie
        public function getName():String 
	{ 
            return _name;
        } 
        // Удалить все элементы из cookie 
        public function clear():void 
	{ 
            _so.clear();
        } 
        // добавить новое значение элементу 
		// key - имя элемента value - значение
        public function put(key:String, value:*):void 
	{ 
            key = "key_"+key;
            if(_so.data.cookie == undefined)
	    { 
                var obj:Object = {};
                obj[key] = value;
                _so.data.cookie = obj;
            }
	    else 
	   {
                _so.data.cookie[key] = value;
	   }
 
            _so.flush();
        } 
        // удалить из cookie элемент по его названию 
        public function remove(key:String):void 
	{ 
            if (isKeyExist(key)) 
	   { 
                delete _so.data.cookie["key_" + key];
                _so.flush();
            } 
        } 
        // получить значение элемента с именем key
        public function get(key:String):Object
	{     
            return isKeyExist(key)?_so.data.cookie["key_"+key]:null;
        } 
 
        // проверить существования элемента с именем key
        public function isKeyExist(key:String):Boolean
	{ 
            key = "key_" + key; 
            return _so.data.cookie != undefined && _so.data.cookie[key] != undefined;
        } 
 
        // проверить существует ли Cookie
        public function isExist():Boolean
	{ 
            return !(getSize()==0);
        }     
 
	//Получить размер cookie в байтах
 	public function getSize():uint 
	{
		return _so.size;
	}
   } 
}

Думаю он довольно понятный, и дополнительных комментариев не требует :)
Весь класс Cookie можно скачать здесь: http://www.anegmetex.com/devblog/files/Cookie.as

Категория: Полезные классы

12 Комментариев

  1. Cronvid

    Комментарий к функции “public function isExist():Boolean”n не верный ;-)

  2. Oleg Antipov

    Спасибо, поправил :)
    Нужно было так: “Проверить существует ли Cookie”

  3. Avgen

    А как настоящие куки получить? подскажите пожалуйста или адресок, где почитать про это можно.

  4. Oleg Antipov

    Можно, но нужно ли? )
    Вот тут вроде как написано как можно использовать настоящие http-куки во флеше http://scriptactionthree.blogspot.com/2008/09/using-real-http-cookies-in-flash-as3.html

  5. Avgen

    Радует что отвечают :) спасибо!
    тогда другой вопрос.
    если я из флеш делаю запрос на php, получает ли php куки со страницы на которой флеш?

  6. Oleg Antipov

    На сколько я знаю все GET запросы из флеша идут с куками.

  7. Avgen

    Спасибо. Все же брать куки прямо со страници, опасное дело :evil:

  8. Newtom

    public function get(key:String):Object
    {
    return isExist(key)?_so.data.cookie["key_"+key]:null;
    }

    должно быть

    public function get(key:String):Object
    {
    return isKeyExist(key)?_so.data.cookie["key_"+key]:null;
    }

    и в скипте надо поправить))

  9. Oleg Antipov

    Спасибо, поправил. У себя на компе уже давно исправил, а тут осталось )

  10. sawkow

    спасибо! обалденно полезное дело писать куки в flash! Довольно надёжно можно метить компьютер пользователя, ибо лежат глубже и не все про это знают. Жаль не знаю flash и не могу связать с рнр. Вот если бы Вы, Олег скрипт, соответствующий предложили. Многие, полагаю были бы благодарны.

  11. Oleg Antipov

    Постараюсь что-нибудь накропать на эту тему :)

  12. Разработка flash игр » Blog Archive » Achievements engine

    [...] которые я навыкладывал в предыдущих сериях, а именно Cookie.as, ageMath.as, ageVector.as, sounds.as, alphaFader.as. Все они уже есть в [...]

Оставить комментарий