=================================
=================================
=================================
출처: 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 이 있는데 아래에서 볼 수 있다.
=================================
=================================
=================================
'ADOBE > ActionScript' 카테고리의 다른 글
[Flex&Flash] useCodePage = true 가 한글 또는 다른언어 깨짐 방지, 언어상관없이 프로그램 만들기 관련 대한 이견 관련 (0) | 2020.09.23 |
---|---|
로드한 SWF 내부에 작성된 ActionScript 3.0 클래스 이름 찾기, 라이브러리에 swc 클래스 찾기 로드 관련, 외부swf 안에 클래스로드 관련 (0) | 2020.09.23 |
[AS] Flash (AIR)와 소켓통신: 관련 데이터 나누어 지는 현상 보안 (0) | 2020.09.23 |
[AS] actionScript 풀스크린시 화면 사이즈 리사이징, 화면 설정 관련 StageDisplayState.FULL_SCREEN (0) | 2020.09.22 |
플래시 액션스크립트 AS 폰트 임베디드 관련 (0) | 2020.09.22 |