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

Очень часто возникает необходимость сохранять какую-то информацию между сеансами игры. И в этом нам поможет специальные 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 комментариев к “Как использовать Cookies во Flash

  1. Avgen

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

  2. Avgen

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

  3. Avgen

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

  4. 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;
    }

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

  5. sawkow

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

  6. Пинг: Разработка flash игр » Blog Archive » Achievements engine

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

Ваш email не будет опубликован. Обязательные поля отмечены *

51 − 46 =

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>