ADOBE/ ActionScript

[AS] ActionScript 3.0 만으로 쿠키를 제어 - Actionscript Cookie Util 소개

AlrepondTech 2020. 9. 23. 02:16
반응형

 

 

 

=================================

=================================

=================================

 

 

 

 

 

 

 

출처: http://blog.jidolstar.com/454

 

ActionScript 3.0만으로 쿠키를 제어할 수 있다? 그냥 막연하게 할 수 있다고 생각했는데 소개할 유틸 코드와 같은 방식을 생각하지 않았다. 본인은  HTML안에 작성된 Javascript를 코드를 사용하지 않고 ActionScript 3.0만으로 쿠키를 제어할 수 있다는 생각을 못했다. 근데 그게 가능했다. (왜 진작 이 생각을 못했지?)

 

소개할 유틸의 사용하는 방법은 다음과 같이 아주 간단하다.

import de.aggro.utils.CookieUtil; 
//Set a cookie named mycookie with a value of mycookie value with a time to live of 30 days 
CookieUtil.setCookie(“mycookie”, “mycookie value”, 30); 
//Get that cookie and trace its value 
trace(CookieUtil.getCookie(“mycookie”)); 
//Delete the cookie from the users computer 
CookieUtil.deleteCookie(“mycookie”); 

더 이상 설명할 필요가 없을 정도로 쉽게 사용할 수 있다.  아래는 유틸 소스이다.

package de.aggro.utils
{
    import flash.external.ExternalInterface;
    
    public class CookieUtil
    {
        public function CookieUtil()
        {
        }
        
        private static const FUNCTION_SETCOOKIE:String = 
“document.insertScript = function ()” +
“{ ” +
“if (document.snw_setCookie==null)” +
“{” +
“snw_setCookie = function (name, value, days)” +
“{” +
“if (days) {”+
                            “var date = new Date();”+
                            “date.setTime(date.getTime()+(days*24*60*60*1000));”+
                            “var expires = ‘; expires=’+date.toGMTString();”+
                        “}” +
                        “else var expires = ”;”+
                        “document.cookie = name+’='+value+expires+’; path=/’;” +
         “}” +
“}” +
“}”;
        
        private static const FUNCTION_GETCOOKIE:String = 
“document.insertScript = function ()” +
“{ ” +
“if (document.snw_getCookie==null)” +
“{” +
“snw_getCookie = function (name)” +
“{” +
“var nameEQ = name + ‘=’;”+
                        “var ca = document.cookie.split(’;');”+
                        “for(var i=0;i < ca.length;i++) {”+
                            “var c = ca[i];”+
                            “while (c.charAt(0)==’ ‘) c = c.substring(1,c.length);”+
                            “if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);”+
                        “}”+
                        “return null;” +
         “}” +
“}” +
“}”;

private static var INITIALIZED:Boolean = false;
        
        private static function init():void{
            ExternalInterface.call(FUNCTION_GETCOOKIE);
            ExternalInterface.call(FUNCTION_SETCOOKIE);
            INITIALIZED = true;
        }
        
        public static function setCookie(name:String, value:Object, days:int):void{
            if(!INITIALIZED)
                init();
            
            ExternalInterface.call(“snw_setCookie”, name, value, days);
        }
        
        public static function getCookie(name:String):Object{
            if(!INITIALIZED)
                init();
            
            return ExternalInterface.call(“snw_getCookie”, name);
        }
        
        public static function deleteCookie(name:String):void{
            if(!INITIALIZED)
                init();
            
            ExternalInterface.call(“snw_setCookie”, name, “”, -1);
        }

    }
}

소스를 보니 놀랍다. ExternalInterface를 이용해 JavaScript와 통신할 수 있다는 것은 알고 있을 것이다.  초반에 ExternalInterface의 call()메소드를 이용해 쿠키를 제어할 함수를 Javascript의 document.insertScript로 등록한 뒤, 등록된 함수를 사용하는 형태이다. 즉, 자바스크립트 코드를 심어주고 그것을 호출하는 형태이다. 이러한 방법은 쿠키를 제어하는 것 뿐아니라 다양한 방법으로 응용될 수 있다고 생각한다.

 

소개한 유틸은 순수 ActionScript 3.0에서 만들었기 때문에 Flash, Flex 등 상관없이 유용하게 사용할 수 있겠다.  아래링크에 만든사람의 블로그와 위 코드를 다운로드 받을 수 있는 링크를 걸어두었다. 참고하자.

이런식으로 만든 IFrame 이 있는데 아래에서 볼 수 있다.

 

 

=================================

=================================

=================================

 

 

 

 

반응형