웹디자인 강의
Flash D-Day 카운터 만들기.(진짜!!! 수정)
2005.02.18 00:45
D-Day 카운터를 표시할 다이나믹 텍스트 필드 생성.
액션 레이어를 만들고 각 프레임에 아래와 같이 코딩.
('//' 뒷부분은 주석이므로 꼭 쓸 필요는 없음)
<1 프레임>
d_day = new Date(); //D-Day 객체를 생성.
d_day.setFullYear(2005, 10, 23); //D-Day 를 2005년 11월 23일로 설정.
d_day.setHours(0, 0, 0, 0); //D-Day 의 시각을 자정 0분 0초 0ms(밀리초;밀리세컨드)로 설정.
d_day_ms = d_day.getTime(); // D-Day 를 1970년 1월 1일 자정 0분 0초 0ms으로 부터 누적된 ms로 환산함.
//
function add_0(input, decimal) {
// 디지털 시계의 숫자 처리 함수.
//예를 들면, 3시 -> 03시, 7분 -> 07분, 5ms -> 005ms, 15ms ->015ms 로 바꿔줌.
for (i=0; i<decimal; i++) { //input을 10의 (decimal-1) 제곱과 대소 비교한다.
if (input<Math.pow(10, i) && i != 0) { // input 이 10의 i제곱보다 작으면,
input = "0"+input; //input 앞에 0을 붙여준다.
}
}
return input; //처음 들어온 input 을 리턴함.
}
<2 프레임>
present = new Date(); //현재 시간 객체를 생성.
present_ms = present.getTime(); //현재 시간을 1970년 1월 1일 자정 0분 0초 0ms으로 부터 누적된 ms로 환산함.
difference = d_day_ms-present_ms; // D-Day와 현재 시간사이의 ms차이를 구함.
d_days = Math.floor(difference/(24*60*60*1000));
//남은 날짜 구하는 식. Math.floor는 내림 함수. 1일은 24시간 * 60분 * 60초 * 1000ms
d_days = add_0(d_days, 3);
//남은 날짜를 보기좋게 표현함.
difference -= d_days*24*60*60*1000;
//이제 D-Day와 현재 시간의 차이에서 남은 날짜만큼의 ms를 빼주어야 한다.
//아랫부분은 모두 같은 방법으로 동일.
d_hours = Math.floor(difference/(60*60*1000));
d_hours = add_0(d_hours, 2);
difference -= d_hours*60*60*1000;
d_minutes = Math.floor(difference/(60*1000));
d_minutes = add_0(d_minutes, 2);
difference -= d_minutes*60*1000;
d_seconds = Math.floor(difference/1000);
d_seconds = add_0(d_seconds, 2);
difference -= d_seconds*1000;
d_ms = difference;
d_ms = add_0(d_ms, 3);
counter = d_days+":"+d_hours+":"+d_minutes+":"+d_seconds+":"+d_ms;
//스테이지에 놓여있던 다이나믹 텍스트 필드가 받는 값이 'counter'이므로, 이에 맞게 표현함.
<3 프레임>
gotoAndPlay(_currentframe-1);
//바로 이전 프레임의 헤드로 돌아가서 다시 실행한다.
완성 파일
http://ngelqueen.cafe24.com/portfolio/2006/2006.swf
소스 파일
http://ngelqueen.cafe24.com/portfolio/2006/2006.fla
졸려서 비몽사몽 만들었더니 이것저것 엉성합니다. ㅠㅠ;
PS : 혹시 2006.fla를 열때 오류가 생기시면 업로드 1번 압축 파일에서 한 번 받아보시기 바랍니다.