본문 바로가기

Dev/Flash

[AS3.0] SharedObject 사용하여 플래시저장

사용자의 통계를 위한 간단한 저장..(Flash Player가 꺼졌다 켜져도 통계유지)하고, 날짜가 바뀌었을때 서버에 url날리는 작업.

var svDay:SharedObject = SharedObject.getLocal("saveDay");
var svData:SharedObject = SharedObject.getLocal("saveData");
var saveDay:Date = new Date()
var months:Array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
var saveDate : String = String(saveDay.date)

if(String(saveDay.date).length == 1) {
    saveDate = "0" + saveDay.date
}


function logSetting() : void {
    if(svDay.data.svdate == null){
        trace("기록된 날짜가 없습니다.");
        svDay.data.svdate = saveDay.fullYear + months[saveDay.month] + saveDate
        svDay.flush();
        clearData();
        trace(svDay.data.svdate)
    }else{
        trace("기록된날짜는 = " + svDay.data.svdate);
        trace("현재날짜는 = " + saveDay.fullYear + months[saveDay.month] + saveDate)
        if(svDay.data.svdate == saveDay.fullYear + months[saveDay.month] + saveDate){
            trace("기록된 날짜와 클라이언트 구동된 날짜가 같습니다.")
            trace("서버에 기록 및 초기화 하지 않습니다.")
        }else{
            trace("기록된 날짜와 클라이언트 구동된 날짜가 다릅니다.")
            trace("통계를 기록하는중입니다.")
            serverRequest();
        }
    } 
}

function serverRequest() : void {
    // 서버에 통계저장
    trace("서버에 저장중..." )
    //trace(m_config_header.SERVER_URL + m_config_header.SAVE_DID_MENU_USE + "kioskId=" + m_config_header.KIOSK_ID + "&useCnt=" +  svData.data.countProduct + "," + svData.data.countFood + "," + svData.data.countTheraphy + "," + svData.data.countMunjin +","+ svData.data.countProgram + "," + svData.data.countEvent)
    reqLoader = new URLLoader();
    reqLoader.addEventListener(Event.COMPLETE, reqLoadComplete);  // 저장후 초기화
    reqLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorSeqLoader);
    var reqURL:String = m_config_header.SERVER_URL + m_config_header.SAVE_DID_MENU_USE + "kioskId=" + m_config_header.KIOSK_ID + "&useDate=" + svDay.data.svdate + "&useCnt=" +  svData.data.countProduct + "," + svData.data.countFood + "," + svData.data.countTheraphy + "," + svData.data.countMunjin +","+ svData.data.countProgram + "," + svData.data.countEvent;
    trace(reqURL);
    try {
        reqLoader.load(new URLRequest(reqURL));
    }catch(e:Error) {
        trace("Unable to load Application configuretion information.");
    }
}

function reqLoadComplete(evt:Event) : void{
    var req:XML = new XML(reqLoader.data)
    if( req.CODE == "FAILURE"){
        onPopUp(req.MSG);
    }else if( req.CODE == "SUCCESS"){
        svDay.data.svdate = saveDay.fullYear + months[saveDay.month] + saveDate
        svDay.flush();
        clearData();
    }
}

function clearData() : void {
     //// 통계초기화
    svData.clear();
    svData.data.countProduct = 0;
    svData.data.countFood = 0;
    svData.data.countTheraphy = 0;
    svData.data.countMunjin = 0;
    svData.data.countProgram = 0;
    svData.data.countEvent = 0;
    svData.flush();
}