document.write(removeRestrictTag()); //]]-->

03 chapter-01스위시 스크립트 이해하기

스위시 스크립트 관련 용어=액션(Action)-

1) 프래임액션=타임라인 스크립트 작성할 프래임(선택)-[스크립트]패널에 작성

2) 버튼 액션=버튼 클릭&마우스포인터 올라간 경우 실행액션=해당 오브젝트(선택)-[스크립트]패널에 작성

3) 스프라이트 액션=스프라이트 무비에 등장.또는 프래임 수(Frame Rate)에 맞추어 제어하기 위한 액션-

    해당 오브젝트(선택)-)-[스크립트]패널에 작성

**이벤트(Event)=무비 안에서 발생하는 특정사건-특정한 이벤트가 발생해야만 지정한 액션이 실행되는것

**변수(Variable)=데이터 저장소=true(참)false(거짓)로 저장할 수 있다
scriptName = "SWiSHscript";.변수 선언= 데이터 저장

**표현식(expression‎!)=값을 계산하기 위한 연산자(Operater)와 피연산자(Operand)의 결합

표현식=문자열(String)-수치(Numerical)-비교(Comparison)-논리(Logical)표현식 등

프레임에 스크립트 작성하기=[타임라인]패널-Scene_1"행 1번 프레임(선택)-[Add script▼](클릭)-[Events]-[Frame]-[onFrame(...)](선택)=[onFrame(1)]이 추가됨

[스크립트]패널 하단-On Frame[스크립트를 실행할 프레임 번호 작성-기본 값 "1"이 입력되어 있슴]

□ After events for placeed objects : 체크하면 해당 프레임에 속한 오브젝트 이벤트가 실행된 후 프레임에 작성된 스크립트가 실행된다.

체크 하지 않을 시 플래시와 같은 방식으로 프레임 액션이 실행된다.

*[Add script▼]=입력할 명령어 선택시 사용

↑↓=입력한 명령어 위치 위 아래 이동  

X 선택한 명령어 삭제

[Guided▼]스크립트 입력 모드(초보자 모드-전문가 모드)

 

★168페지 03-02 버튼으로 무비 재생 제어하기 [movieControl]

*무비를 제어할 수 있는 여러가지 명령어

stop() : 재생중인 무비 정지시킨다

play() : 정지된 무비를 다시 재생시킨다

gotoAndplay() : 특정 프레임부터 재생을 다시 시작하게 만든다

gotoAndStop() : 특정 프레임으로 이동한 후 정지하게 한다

STOP=정지 

SKIP=애니메이션 마지막 프레임으로 건너뛴다

REPLAY=처음부터 다시 애니메이션을 시작한다

 

01-[타임라인]패널-스클바(우쪽 드래그)=애니메이션 마지막 프레임이 나올 때 까지-Scene1행 마지막 174번(선택)

[타임라인]패널에서 프레임 액션을 적용할 "대상 프레임"(선택)-[스크립트]패널에서 스크립트 작성

 

02-[Script]탭(클릭)=스크립트]패널-[Add Script▼](클릭)-[MovieControl]-[stop()]액션(선택)=

onFrame (174) {
    stop();
}
※stop()액션은=재생중인 무비를 정지시키며,마지막 프레임에 작성했기 때문에 무비가 한번 재생된후 마지막 프레임에서 멈추게 된다

 

03-Scene1 행의 마지막 174번 프레임에 빨간색 사각형이 표시되고,

[스크립트]패널에는 플래이드헤드가 174번 프레임에 놓일 때 stop() 액션이 실행되도록 onFrame 이벤트에 stop() 액션이 추가된다

 

 04-[아웃라인]패널-STOP버튼(선택)-[Add Script▼](클릭)-[Events]-[Button]-[on(release)](선택)

on (release) {
}
[스크립트]패널 하단=버튼에 설정할 수 있는 8개의 세부옵션이 표시된다,현재 □ release 로 설정되여있다. 

★ 버튼 이벤트의 세부 옵션

press : 버튼 위에서 마우스 클릭할 때

release : 버튼 위에서 마우스 버튼을 눌럿다 뗄때

Roll over : 버튼 위에 마우스 포인터를 올려놓을 때

Roll out : 버튼 위에 마우스 포인터가 올려 졌다가 밖으로 벗어날 때

Drag over : 버튼 위에서 마우스 버튼을 클릭하고,드래그해서 빠저 나갔다가 드래그하면서 다시 버튼 위에 마우스 포인터가 올라갈 때

Drag out : 버튼 위에서 드래그를 시작하여 밖으로 벗어날 때

Release outside : 버튼 위에서 마우스 버튼을 누른후 바깥쪽에서 뗄 대

Key : 설정한 키가 눌려질 때

 

05-on(...)버튼 이벤트 핸들러를 사용해서 STOP 버튼을 눌렀다 떼는 순간 발생하는 이벤트를 감지하도록 설정을 했다

여기서 무비 재생이 멈추도록 stop()액션을 추가해야한다,

-[Add Script▼](클릭)-[Movie Control]-[stop()]액션(선택)

on (release) {
    stop();
}
☆ stop() 액션이 적용되면 [스크립트]패널 하단에 Target 옵션이 나타난다=이 옵션은 stop() 액션을 적용할 대상을 지정하는 것,

여기서는 버튼이 있는 메인 무비를 제어할 것이므로 옵션을 설정하지 않고 그대로 둔다

☆ 만약 스프라이트를 제어하는 경우라면 Target 옵션에 스프라이트 이름을 작성해야 한다,

 

06-[아웃라인]패널-PLAY 버튼 위에 (마오)-[Script]-[Movie Control]-[play()](선택)

on (release) {
    play();
}
★ 만약 감지할 이벤트가 Press라면 [스크립트]패널에서 [on(release)](선택)하고 이벤트 옵션에서 Press옵션을 (선택)하면 된다

★ Play-Stop 결과 확인=재생[ ▶]아이콘(클릭)&메뉴-[Control]-[Play Movie](선택)-[Control]-[Stop]

 

07-[아웃라인]패널-SKIP(선택)-[스크립트]패널-[Add Script▼]-[Movie Control]-[gotoAndStop]-[gotoAndStop(FRAME)](선택)-세부옵션=SKIP버튼을 누르면 마지막 프레임으로 가서 멈추도록만들 것이므로-◎Frame 옵션에 마지막 프레임 번호[174](입력)-Target옵션란-<current scene>은 현재 무비가 제작된 장면(Scene)을 의미한다

on (release) {
    gotoSceneAndStop("<current scene>",174);
}

08-[타임라인]패널-가로 스크롤바(왼쪽으로 드래그)-Scene_1 행의 1번 프래임(선택)-[Add Script▼]-

[Frame]-[setLable(...)](선택)=이 명령은 책 속에 책갈피를 끼우듯이 프레임에 이름을 설정하여 프래임 번호 대신에 설정한 이름을 gotoAndPlay(),gotoAndStop() 액션에서 사용하기 위한 것.

☆[setLable(...)]명령을 적용하면 [스크립트]패널에는 플래이해드가 1번 프레임에 놓일 때 실행될 코드를 작성할 수 있는 onFrame(1) 프레임 이벤트 핸들러에 setLabel() 명령이 추가된다,

Label 옵션란에 [start](입력)-[Enter](누름)=1번 프레임의 이름을 "start"로 설정한다=[타임라인]패널의 1번 프레임에 방금 설정한 프레임 이름이 표시된다.

onFrame (1) {
    setLabel("start");
}
onFrame (174) {
    stop();
}
09-[아웃라인]-REPLAY(선택)-[Add Script▼]-[Movie Control]-[gotoAndPlay]-[gotoAndPlay(LABEL)](선택)-Labal 옵션에 1번 프레임을 의미하는 [start](입력)-[Enter]

on (release) {
    gotoAndPlay("start");
}
10-결과 확인=[레이아웃]패널(이동)-툴바-재생[▶](클릭)=무비{실행}-[SKIP](누름)=애니메이션의 마지막 장면에서 멈추고,-[REPLAY](누름)=처음부터 다시 애니메이션이 시작된다.

 

★03 스프라이트를 버튼으로 제어하기 [Sample/Ch03/Lesson03/spriteControl.swi(176page)

스프라이트는 자체 타임라인을 갖고 있어 그 안에 독립적인 애니메이션을 제작가능(메인 무비안에 들어있는 작은 무비)

01-[아웃라인]패널-sprite(선택)-패널모움-[sprite]탭(클릭)-Name[flower](입력)-[Enter](누름)

02-[아웃라인]패널-STOP버튼(선택)-[Script]탭(선택)-[Add Script]버튼(클릭)-[Movie Control]-   [stop()](클릭)-하단 Taget[Flower▼](선택)=STOP 버튼 액션 적용후-[스크립트]패널[Flower.stop():]코드 생성

03--[아웃라인]패널-PLAY버튼(선택)-[Script]탭(선택)-[Add Script]버튼(클릭)-[Movie Control]-   [play()](클릭)-하단 Taget[Flower▼](선택)=Play 버튼 액션 적용후-[스크립트]패널[Flower.play():]코드 생성

04-[레이아웃]패널(이동)-툴바-[재생][▶](클릭)-[PLAY][STOP]버튼(누름)=애니메이션 시작 결과 확인

* [레이아웃]패널-flower(선택)-마오-[gruping]-[ungroup](선택)

★ flower1~6(선택)-마오-[Convert]-[convert to Sprite](선택)=독립적인 개체(하나 하나 따로)

☆ □ Stop playing at end of Sprite(체크 해제)

※ Text 삽입시 T(마오)-[Margins](체크 해제)확인-패널모움[V]-정렬[왼쪽정렬]-[Hide Option]

* flower1(선택)-[Script]탭(선택)-[Add Script]버튼(클릭)-[Events]-[Button]-[on(rollOver](선택)-

[Add Script]버튼(클릭)-[Movie Control]-[stop()](클릭)-하단 Taget[Flower1▼](선택)=flower1~6(반복)

on (rollOver) {
    flower2.stop();
}
on (press) {
    flower2.play();
}

*[Script]탭(선택)-[Add Script]버튼(클릭)-[Evente]-[Button]-[on(press()](선택)-[Add Script]버튼(클릭)-[Movie Control]-[play()](클릭)-하단 Taget[Flower1▼](선택)=flower1~6(반복)

* PLAY(선택)-[Add Script](클릭)-

[Add Script]버튼(클릭)-[Movie Control]-[Play()](클릭)-하단 Taget[Flower1▼](선택)=flower1~6(반복)

 {on (release)
    f1.flower1.play();
    flower2.play();
    flower3.play();
    flower4.play();
    flower5.play();
    flower6.play();
}
* STOP(선택))-[Add Script](클릭)--

[Add Script]버튼(클릭)-[Movie Control]-[stop()](클릭)-하단 Taget[Flower1▼](선택)=flower1~6(반복)

on (release)

{
    f1.flower1.stop();
    flower2.stop();
    flower3.stop();
    flower4.stop();
    flower5.stop();
    flower6.stop();
}
★ 드래그 효과

+flower1-script

on (rollOver) {
    flower1.stop();
}
on (press) {
    flower1.play();
}
삭제

하위(안쪽개체)-flower1(선택)-[Add Script]버튼(클릭)-[Evente]-[Button]-[on(rollOver)](선택)-

옵션-□ Roll over(체크)-[Movie Control]-[stop()](클릭)-하단 Taget[Flower1▼](삭제)-

-[Add Script]버튼(클릭)-[Evente]-[Button]-[on(rollOut)](선택)-

옵션-□ Roll Out(체크)-[Movie Control]-[Play()](클릭)-하단 Taget[Flower1▼](삭제)-

-[Add Script]버튼(클릭)-[Evente]-[Button]-[on(press)](선택)-옵션-□ Press(체크)-

-[Mouse Dragging]-[start DragLocked(...)](선택)-옵션-□ constrain(체크)-Rectangle=Left[0]-Top[0]-Right[300]-Bottom[250](입력)-

-[Evente]-[Button]-[on(release)](선택)-옵션-□release (체크)-Key[1](입력)-

-[Mouse Dragging]-[stopDrag()](선택)

on (rollOver) {
    stop();
}
on (rollOut) {
    play();
}
on (press) {
    startDragUnlocked(0,300,0,250);
}
on (release) {
    stopDrag();
}
위 복사-하위(안쪽개체)-flower2~6까지 (붙여넣기)-Key만[2]~[6](입력)-

 

★184Page[05]계산기 만들기

★ [T](선택)-[계산기](입력)-한자변환-[파란 다이어몬드로 드래그](조정)-위치(드래그 조정)-

패널모움-글자 하단(클릭)-커서(생성시)-BackSpase(클릭)

[아웃라인]패널-연산방식-덧셈.뺄샘.곱셈.나눅셈,-구성요소-Group으로 묶여있다

+ - X /로 표시된 오브젝트=단순 정보 (전달)제공하는 정석(Static)이며

☆ [택스트]패널-입력(Input) 택스트 세부옵션="덧셈"-"add_a"택스트"(선택)-[택스트]패널(선택)-       Name란[add_a](입력)-Target 옵션-□ (체크)-

☆ 택스트 형식=입력(Input)택스트 ☆ 고급(Advanced)(설정)-Black border With White Background버튼(활성화)-태두리선과 흰색 배경 나오도록 (설정)

☆ 다이내믹(Dynamic) 택스트 만들기 위한 세부옵션=덧셈 그릅-"add"택스트 오브젝트(선택)-[택스트]패널-Name[add](입력)-Target 옵션-□ (체크)-

* 택스트 형식=다이내믹(Dynamic)택스트-고급(Advanced)(설정)-Black border With White Background버튼(활성화)-태두리선과 흰색 배경 나오도록 (설정)

★ 버튼을 누르면 계산 결과 Result 란에 표시하기

덧셈 그룹-"Button"(선택)-[Script]탭(누름)=[스크립트]패널로(전환)

[Add Script]-[Statements]-[name=expr;](선택)-결과 값 "add"다이내믹 택스트에 표시하기=

[스크립트]패널-Target[add](입력)-Name[text](입력)=이는 다이내믹 택스트에 출력할 데이터를 저장하는 속성이다-Operator옵션(그데로 두고)-add.text속성에 할당할 값에 해당하는 코드를 아래와 같이 작성한다

Number(add_a.text) + Number(add_b.text)

Number()함수=()의 값을 숫자로 변환하는 함수이다.

입력 택스트에서 입력한 값은 모두 문자로 인식되기 때문에 덧셈 연산을 하기 위해 숫자형으로 변환한것이다.

★ 뺄셈 그릅-A.B.란에서 숫자를 입력받는 "sub_a","sub_b"입력 택스트와 결과 값을 출력하는 "sub"다이내믹 택스트가 포함되여 있다.

뺄셈 그릅--"Button"(선택)-[Script]탭(누름)=[스크립트]패널로(전환)

[Add Script]-[Statements]-[name=expr;](선택)=버튼을 누르면 결과 값을 "sub"다이내믹 택스트에 표시하기-

[스크립트]패널-Target[sub](입력)-Name[text](입력)=이는 다이내믹 택스트에 출력할 데이터를 저장하는 속성이다-Operator옵션(그데로 두고)-sub.text속성에 할당할 값에 해당하는 코드를 아래와 같이 작성한다

Number(sub_a.text) - Number(sub_b.text)

★ 곱셈그릅-A.B.란에서 숫자를 입력받는 "mul_a","mul_b"입력 택스트와 결과 값을 출력하는 "mul"다이내믹 택스트가 포함되여 있다.

곱셈 그릅--"Button"(선택)-[Script]탭(누름)=[스크립트]패널로(전환)

[Add Script]-[Statements]-[name=expr;](선택)=버튼을 누르면 결과 값을 "mul"다이내믹 택스트에 표시하기-

[스크립트]패널-Target[mul](입력)-Name[text](입력)=이는 다이내믹 택스트에 출력할 데이터를 저장하는 속성이다-Operator옵션(그데로 두고)-mul.text속성에 할당할 값에 해당하는 코드를 아래와 같이 작성한다

Number(mul_a.text) * Number(mul_b.text)

★ 나눗셈그릅-A.B.란에서 숫자를 입력받는 "div_a","div_b"입력 택스트와 결과 값을 출력하는 "div"다이내믹 택스트가 포함되여 있다.

나눗셈 그릅--"Button"(선택)-[Script]탭(누름)=[스크립트]패널로(전환)

[Add Script]-[Statements]-[name=expr;](선택)=버튼을 누르면 결과 값을 "mul"다이내믹 택스트에 표시하기-

[스크립트]패널-Target[div](입력)-Name[text](입력)=이는 다이내믹 택스트에 출력할 데이터를 저장하는 속성이다-Operator옵션(그데로 두고)-div.text속성에 할당할 값에 해당하는 코드를 아래와 같이 작성한다

Number(div_a.text) / Number(div_b.text)

★ 결과 확인=[레이아웃]패널(이동)-[재생] 아이콤[ ▶](클릭)

 

★  196페이지-07-로그인 인증화면 만들기

* [Scene_1] : 로그인 화면

* [Scene_2] : 로그인 성공 시 보이게 될 화면

* [Scene_3] : 로그인 실패 시 보이게 될 화면

완성파일(열고)-[Ctrl]+[Enter](무비실행)

[Scene_1]-1번 프레임에 무비실행 후 로그인 화면 정지상태로 있게 만들기

[타임라인]1번-"Stop()액션(적용)

*usrerid와 userpw=아이디와 비밀번호를 입력받을 수 있는 입력(Input)택스트이다.

[Scene_1]"Button"(선택)-[Script]탭(클릭)-[스크립트]패널로 전환

* 아이디와 비밀번호를 입력 후 [로그인]버튼을 누르면 올바른 로그인 정보를 입력했는지 체크하는 기능을 if 조건문으로 구현할 것이다.

[스크립트]패널-[Add Script]-[Conditional]-[if(...){](선택)-[스크립트]패널에 다음과 같이 조건문의 조건 표현식을 작성한다.

on (release) {
    if (userid.text == "swish" && userpw.text == "script") {
        gotoSceneAndStop("Scene_2",1);
    } else {
        gotoSceneAndStop("Scene_3",1);
    }
}
-if 조건문 선택 상태-[스크립트]패널-[Add Script]-[Movie Control]-[gotoAndStop]-[gotoAndStop(FRAME)](선택)=

위 코드는 올바른 로그인 정보가 입력된 경우 "Scene_2로 가서 로그인 성공 메시지를 보여주기 위한것이다.

Target란[Scene_2▼](선택)-◎Frame[1]-◎Stop

★논리 연산자를 사용한 조건 표현식 분석

userid.text : 아이디로 입력받은 문자

userpw.text : 비밀번호로 입력받은 문자

== : 좌변과 우변이 같은지 체크하는 동치연산자

userid.text == "swish" : 아이디로 입력한 값이  swish와 같은지 체크하는 조건 표현식

userpw.text == "script" : 비밀번호로 입력한 값이 script 와 같은지 체크하는 조건 표현식

&& : AND 논리연산자로 두 가지 조건  표현식의 결과가 모두 참인 경우에만 if 조건문의 {와}사이에 작성한 코드를 실행하라는 의미이다.

[스크립트]패널-[Add Script]-[Conditional]-[}else{](클릭)=이 추가한 코드는 틀린 로그인 정보가 입력된 경우 실행될 코드를 else 조건문으로 만들기 위한 것이다.

[스크립트]패널-[Add Script]-[Movie Control]-[gotoAndStop]-[gotoAndStop(FRAME)](선택)=이 추가 코드는 틀린 로그인 정보가 입력된 경우 "Scene_3"로 가서 로그인 실패 메시지를 보여주기 위한 것이다.-Target[Scene_3 ▼](선택)

on (release) {
    if ( userpw.text == "운봉 컴사랑") {
        gotoSceneAndStop("Scene_2",1);
    } else {
        gotoSceneAndStop("Scene_3",1);
    }
}


[Scene_1] -[Rectangle]□(선택)-회원인증(위에 드래그)-[T]-[수수깨끼](입력)-글자꼴.크기.색상(조정)-택스트+[Rectangle](Shape)-그릅으로 묶음-[패널]모움-그릅 이름[수수깨끼](입력)-

회원 아이디 위에 위와 같은 방법-[운봉의 카페 이름은 무엇?](입력)-

비밀번호(password) 위-위와같은 방법[정답](입력)

[로그인]란-Button-[Login.gif](삭제)-위와 같은 방법-[확인](입력)

☆ *로그인 성공 화면으로(이동 후)-[로그아웃]버튼을 누르면 로그인 화면으로 이동시키기

[Scene_2]-Button(선택)-[스크립트]패널-다음 코드 작성

on (release) {
    gotoSceneAndStop("Scene_1",1);
}
Target란[Scene_1▼](선택)-◎Frame[1]-◎Stop

*로그인 실패화면-[다시 로그인하기]버튼을 누르면 로그인 화면으로 이동시키기[Scene_3]-Button(선택)-[스크립트]패널-다음 코드 작성

on (release) {
    gotoSceneAndStop("Scene_1",1);
}
Target란[Scene_1▼](선택)-◎Frame[1]-◎Stop

[Finish]

* 보안 기능이 있는 입력택스트 만들기

택스트 툴(선택)-[택스트]패널-[Input Text▼](눌러 입력 택스트)(설정)-[Advanced▼]로 설정)-[***]옵션(선택)하면 비밀번호 입력시 *로 표시된다.

 

★ 204페이지-3-08-무비배경에 오늘 날자와 시간 표시하기

* 날자와 요일을 제어할 수 있는 Date 객체의 메서드 getFullYear(),getMonth(),getDate(),getDay()를 이용해서 무비의 오늘 날자와 시간을 표시하는 방법

★ 스위시 스클립트에서 날자,시각,요일 정보를 사용하려면 DAte 객체 인스턴스를 만들어야 하며-Date클래스에서 Date객체 인스턴스를 만들려면 다음과 같은 new 연산자와 Date()생성자를 사용해서 today란 이름의 Date 객체를 생성한다,

today = new Date();

today에는 겍체가 생성되였을 때의 시간 정보가 "저장"된다,

trace() 명령어를 이용해서 today를 출력하면 [디버그]패널에 시간 정보가 출력되는 것을 알 수 있다,

today = new Date();...[Ctrl]+[Enter]=Tue Jan 25 19 : 06 : 16 GMT+0900 2005

trace (today);

* 객체란=프로그래밍 언어에서 객체란 자주 사용하는 기능을 미리 만들어 놓은 클래스(Class)의 메서드와 솟성을 그대로 상속받은 클래스의 복사본을 말한다, 여기서는 Date 클래스에 정의된 메서드와 속성을 상속받은 today 객체를 만든 것이다,

* [디버그]패널에 출력된 시간 정보는 앞에서 부터 해석하면="화요일 1울 25일 19시 6분 16초

GMT+0900(그리니치 표준시간 보다 9시간 빠름)2005년"이 된다.

다음 표는 today 객체에 저장된 시간 정보에서 연도,월,일,요일에 대한 정보를 확인하는 방법을 정리한 것이다.

메서드=getFullYear() : 설명=연도를 나타내는 네 자리 정수를 리턴하는 메서드

        =getMonth() : 달을 나타내는  0 이상 11 이하의 정수를 리턴한다.

                            리턴되는 값이 0이면 1월, 11이면 12월이 된다.

        =getDate() : 날자(1이상 31이하)를 구하는 메서드

        =getDay() : 요일을 나타내는  0 이상 6 이하의 정수를 리턴한다,

                         리턴되는 값이 0이면 일요일, 6이면 토요일이 된다.

* 오늘 날자 표시하기=오늘 날자를 구하는 핵심 코드를 정리하면 아래와 같다.

//Date 객체 생성

today = new Date();

//연도를 구하여 "년" 문자열과 결합한 후 thisY 변수에 저장

thisY = today . getFullYear() + "년" ;

//월 구하여 :월" 문자열과 결합한  후 thisM 변수에 저장

thisM = today . getMonth() + 1 + "월";

//일을 구하여 "일" 문자열과 결합한  후 thisD 변수에 저장

thisD = today . getDate() + "일";

//Debug 패널에 연도, 월, 일을 출력

trace (thisY + thisD);

* today . getMonth()는 9월이면 8을 리턴하기 때문에 1을 더하여 현재 월을 계산한 것이다.

//는 작성한 스크립트를 설명하는 간단한 정보는 작성할 때 사용하는 주석(Commentes)기호이다. [스클립트]패널에서 [Add Script]-[Debugging]-[// comments]항목을선택하면 주석 기호를 [스크립트]패널에 추가할 수 있다.

* 오늘 요일 표시하기

요일 정보를 확인할 수 있는 getDay() 메서드는 일요일이면 0, 월요일이면 1을 리턴하게 되는데 요일 이름을 ,영문,한자 등으로 표현 하려면  getDay() 메서드에 의해 리턴된 수자값에 대응하는 배열 원소를 갖는 배열 데이터 저장소가 필요하다,

즉, 일요일을 의미하는 숫자 0이 리턴되면 배열의 0번 원소에 저장된 값을 요일 이름으로 설정하는 방식이 되면 얼마든지 다양한 요일 이름을 표현할 수 있다.

 onFrame (1) {
    weekName = ["日", "月", "火", "水", "木", "金", "土 "];
    var today = new Date();
    var thisY = today.getFullYear() + "年 ";
    var thisM = today.getMonth() + 1 + "月 ";
    var thisD = today.getDate() + "日 ";
    var thisW = weekName[today.getDay()] + "曜日";
    dateField.text = thisY+ thisM + thisD + thisW;
}

**trace(thisW);**
위 코드는 요일 이름을 한자로 표시하기 위해 요일 이름을 저장한  weekName 배열을 만들고,

today란 이름의 Date객체를 생성한 후  thisW 변수에 요일에 해당하는 값을 저장한 것이다,

따라서 trace()명령문을 사용해서 thisW 변수값을 출력하면 오늘 요일 이름이[디버그]패널에 출력된다,

만약 오늘이 일요일이라면 today.getDay()는 0이므로  weekName[today.getDay()]은 weekName[0]과 같게된다,

weekName[0]은 배열에서 첫 번째 배열 원소인 "일"을 가리키므로 thisW 변수에는 "일요일"이 저장되여,실행하면 [디버그]패널에 "일요일"이 출력된다.

* 시작 파일에는 오늘 날자와 요일을 표시할 다이나믹 택스트가 놓여있다

Name옆-□target(체크)- [D]-하단[Dynamic Text▼]-[Formatting▼]

* "dateField" 다이나믹 택스트에 날자와 요일 표시하기

[Script]탭(선택)-[타임라인]패널-Scene_1행-1번 프레임(선택)-[Guided]-[Expenrt](선택)=전문가 모드(전환)

# 디바이스 폰트(Device Font)?=택스트 가독성을 높여주기 위해 사용하는 옵션이다

디바이스 폰트(Device Font)를 적용하지 않는 택스트는 크기가 작아지면 뭉개진 것처럼 보여 가독성이 떨어집니다,

이를 방지하기 위해 [택스트]패널에서 폰트 유형(Type)을 디바이스 폰트로(선택)하면 글자를 보다 선명하게 할 수 있다.

1번 프레임(선택)상태-[Add Script]-[Events]-[Frame]-[onFrame(...)](선택)

onFrame(1)의 코드 블록인 {와}사이에 다음 코드를 작성한다.

onFrame (1) {
    weekName = ["日", "月", "火", "水", "木", "金", "土 "];
    var today = new Date();
    var thisY = today.getFullYear() + "年 ";
    var thisM = today.getMonth() + 1 + "月 ";
    var thisD = today.getDate() + "日 ";
    var thisW = weekName[today.getDay()] + "曜日";
    dateField.text = thisY+ thisM + thisD + thisW;
}

[Finish]-[레이아웃]패널(이동)-툴바-재생[▶]아이콘(클릭)=확인

★ 플래시와 연동하기

1) 플래시-[Insert]-[New Symbol]메뉴(클릭)=대화상자-"Movie Clip"(선택)

2) [File]-[Import!]-[Import! to Stage]명령으로 *swf 파일을 플래시의 무비클럽 심볼 스태이지로 불어오면 된다.

# 만약, 사운드나 액션이 제대로 작동하지 않는다면 플래시의 LoadMovie 액션을 이용해서 스위시에서 만든 *swf 파일을  불러와 이용해야한다,

이 경우에는 스위시에서 만든 액션이나 사운드 등의 모든 기능이 제대로 작동한다.

 

★ 210페지 03-09 디지털시계와 아날로그 시계 만들기

현재 시각 표시하기=현재 시,분,초를 Date 클래스로 부터 생성된 cntTime 객체에서 가저오려면 다음과 같은 "메서드"를 사용한다.

메서드= cntTime .getHours() = 현재시간에서 "시"에 해당하는 정보를 리턴한다

           cntTime .getMinutes() = 현재시간에서 "qns"에 해당하는 정보를 리턴한다

           cntTime .getSeconds() = 현재시간에서 "초"에 해당하는 정보를 리턴한다

Date 객체는 갣체가 생성된 순간의 시간 정보를 저장하므로 일정 시간 간격으로 Date 객체를 다시 생성하여 최신 시간 정보가 저장되도록 만드는 것이다,

onEnterFrame() 이벤트 핸들러를 사용해서  1/Frame rate 마다 Date 객체의 시간 정보를 갱신하는 방식으로 현재 시각을 [리버그]패널에 표시한다.

여기서는 시,분,초를 제어할 수 있는 Date 객체의 메서드 getHours() ,getMinutes() ,getSeconds() 를 이용해서 무비에 현재 시각을 표시하는 디지털 시계와 아날로그 시계 제작 방법을 살펴본다,

onEnterFrame() {
    cntTime = new Date();
    thisHour = cntTime.getHours();
    thisMin = cntTime.getMinutes();
    thisSec = cntTime.getSeconds();
    arrowH._rotation = thisHour*30 + thisMin/2;
    arrowM._rotation = thisMin*6;
    arrowS._rotation = thisSec*6;
}
★ onEnterFrame() {
// cntTime = 이름의 Date 객체 생성

    cntTime = new Date();

//thisHour 변수에 "시"에 해당하는 값을 저장

   thisHour = cntTime.getHours();
//   thisHour = 변수에 "분"에 해당하는 값을 저장

    thisMin = cntTime.getMinutes();

//thisHour =  변수에 "초"에 해당하는 값을 저장

    thisSec = cntTime.getSeconds();
// [디버그]패널에 현재 시각을 출력

trace (   thisHour + ";" + thisMin + ";" +  thisSec );

}

function setDigit(getTime) {
    var rtnTime;
    if (getTime < 10) {
        rtnTime = "0"+getTime;
    } else {
        rtnTime = getTime;
    }
    return rtnTime;
}
# onEnterFrame() {
    cntTime = new Date();
    thisHour = setDigit(cntTime.getHours());
    thisMin = setDigit(cntTime.getMinutes());
    thisSec = setDigit(cntTime.getSeconds());
    timeField.text = thisHour + "時" + thisMin + "分" + thisSec + "秒";
}
# 시,분,초를 한자로 변환시=[아웃라인]-timeField(선택)-[패널]-Text(선택)-fontType[D](선택)-[Dynamic Text▼](선택)-[Advanced▽](선택)-글시란의 크기(다이야몬드로 조절)

 

★ 시,분,초를 항상 두 자리 숫자로 표시하는 setDigit(),함수 만들기

+ Recent posts