Action Script 3 Cookies; Operações CRUD.

   

Muitas vezes pensamos, como era facil se pudessemos guardar isto e esta variavel no pc do utilizador, pois bem, isso é possivel e até bem facil, depois de ler um artigo bem interessante, deixo aqui um package que pode simplesmente ser utilizado para gravar e ler dados de um cookie no pc do utilizador… vejam o seguinte código:

Download: Cookie.as
package com.nttlib.util {
 
    
import flash.net.SharedObject
 
    
public class Cookie {
        
private var _time:uint;
        
private var _name:String;
        
private var _so:SharedObject;
 
        
public function Cookie(name:String = "nttlib", timeOut:uint=3600) {
            
_name = name;
            
_time = timeOut;
            
_so = SharedObject.getLocal(name, "/" );
        
}
 
        
// limpa o cookie quando o seu tempo expirar;
        
public function clearTimeOut():void {
            
var obj:* = _so.data.cookie;
            
if(obj == undefined){
                
return;
            
}
            
for(var key in obj){
                
if(obj[key] == undefined || obj[key].time == undefined || isTimeOut(obj[key].time)){
                    
delete obj[key];
                
}
            
}
            
_so.data.cookie = obj;
            
_so.flush();
        
}
 
        
// verifica o timeout
        
private function isTimeOut(time:uint):Boolean {
          
var today:Date = new Date();       
            
return time + _time * 1000 < today.getTime();
        
}
 
        
// busca timeout;
        
public function getTimeOut():uint {
            
return _time;
        
}
 
        
// busca nome do cookie;
        
public function getName():String {
          
return _name;
      
}
 
        
// limpa todos os valores o cookie;
        
public function clear():void {
            
_so.clear();
        
}
 
      
// adiciona item ao cookie( variavel, valor )
        
public function put(key:String, value:*):void {
            
var today:Date = new Date();
            
key = “key_”+key;
            
value.time = today.getTime();
            
if(_so.data.cookie == undefined){
                
var obj:Object = {};
                
obj[key] = value;
                
_so.data.cookie = obj;
            
}else{
                
_so.data.cookie[key] = value;
            
}
            
_so.flush();
        
}
 
        
// elimina item do cookie (variavel);
        
public function remove(key:String):void {
            
if (isExist(key)) {
                
delete _so.data.cookie["key_" + key];
                
_so.flush();
            
}
        
}
 
        
// busca valor do item (variavel);
        
public function get(key:String):Object{     
            
return isExist(key)?_so.data.cookie["key_"+key]:null;
        
}
 
        
// Verifica se o cookie existe;
        
public function isExist(key:String):Boolean{
            
key = “key_” + key;
            
return _so.data.cookie != undefined && _so.data.cookie[key] != undefined;
        
}
    
}
}
Download: Cookie.as

Fonte: ntc.cc

Espero que seja util.

Abraço.

Deixe um comentário or Deixe um Trackback

6 Comentários

  1. Julho 14, 2008 às 4:34 pm | Permalink

    Mários este package pode ser utilizado para manter o usuario logado se ele der reload no navegador?

    Obrigado.

  2. Julho 15, 2008 às 7:13 am | Permalink

    Sim, pode :)

    Basta ao fazer login usar o método do package:

    .put(”identificado”,”ok”);

    e depois verificar sempre esse valor:

    if(.get(”identificado”)==”ok”) //esta identificado
    else {} //não está identificado

    :)

  3. Agosto 15, 2008 às 10:27 pm | Permalink

    Olá Mario,

    Estou tentando usar a classe acima só que quando tento incluir um valor da o seguinte erro:

    //CODIGO
    var trakShared:Cookie = new Cookie(’trakinasNovo’);
    trakShared.put(’ilha’, Utils.global.atual);
    trace(trakShared.get(’ilha’));

    //ERRO
    ReferenceError: Error #1056: Cannot create property time on String.
    at com.trakinas.geral::Cookie/put()
    at trakinas_fla::MainTimeline/trakinas_fla::frame1()

    Voce tem ideia do que pode ser?

    Um abraço

  4. Agosto 16, 2008 às 6:20 am | Permalink

    Está usando flash cs certo? esse erro pode se dever a muitas coisas, mas tente na class onde tem:

    private var _time:uint;
    private var _name:String;
    private var _so:SharedObject;

    colocar tudo como public e tente de novo… (deve funcionar…)

    se não der, vá ao menu:

    File->Publish Setting->Flash->Actionscript 3.0 e desactive o “Automatically declare stage instances” e veja se resolveu….

  5. Brian
    Agosto 22, 2008 às 6:23 pm | Permalink

    Mário, há como capturar o serial do HD ou o número MAC do computador do usuário e armazenar em um sharedObject ?

  6. Agosto 22, 2008 às 6:38 pm | Permalink

    Que eu saiba não… :(

Deixe um comentário

O seu email nunca será publicado ou partilhado. Campos obrigatórios estão marcados com um *

*
*