본문 바로가기

Front Ends

플래시 액션스크립트

(1) 액션스크립트를 짤 때 고려해야 할 3가지 사항 : (언제, 무엇을, 어떻게)

    액션스크립트를 짤때는 항상 이 세가지를 고려하면 일단은 머리를 조금 쉽게 굴릴 수 있습니다.

    물론 이 세가지를 고려하는 것도  머리를 굴려야하겠지만.....  

- 언제 (이벤트, Event)

실제생활 : 친구 만날 때, 선생님 만날 때, 버스가 도착할 때, 강도가 침입했을 때

 

  -> 사람 이벤트를 나열하시오.

      잠잘때, 밥먹을때,일어났을때, 걸어갈때

  -> 핸드폰 이벤트를 나열하시오.

  -> 형광등의 이벤트를 나열하시오.


  ==> 복잡한 물체일수록 이벤트가 (많다, 적다)


- 무엇을 (명령을 받을 주체)

실제생활 : 핸드폰을 던져라, 강아지를 잡아라, 철수야 뛰어라

 

- 어떻게 (명령문 혹은 알고리즘)

실제생활 : 핸드폰을 던져라, 강아지를 잡아라, 철수야 뛰어라



(2) 플래시가 알아들을 수 있는 문장형태 (이것이 바로 플래시가 사용하는 언어형태라고 보시면 되겠죠?)

언제(이벤트종류){

   무엇을 어떻게;

   무엇을 어떻게;

}


 

(3) 플래시에서 액션을 적을 수 있는 곳 : (무비클립, 버튼, 키프레임)

--as1.0부터는 키프레임에 액션을 쓰는 것을 권장하고 있죠. 그러나 처음부터 프레임에 바로 쓰는 것이 힘들다면

    무비클립에, 버튼에 쓰다가 프레임에 쓰는 연습을 해도 좋을 것 같아요.

     as1.0에서 as2.0 으로 옮겨가는 것두 많은 연습을 통해서 가능한 것처럼 말이죠.

    (물론 저도 as 2.0 방식 무지 힘듭니다 ^^)
    

- 무비클립 이벤트의 종류는?

   

  • load: 무비 클립이 처음 화면에 나타날때 ,그리고 액션이 시작될때 한번 실행됩니다.
  • unload: 무비 클립이 타임라인에서 제거된 후 첫 프레임에서 액션이 시작됩니다
  • enterFrame: 무비 클립의 프레임 속도로 액션이 매프레임마다 실행됩니다.
  • mouseMove: 마우스가 이동할 때마다 액션이 시작됩니다.
  • mouseDown: 왼쪽 마우스 버튼을 누르면 액션이 시작됩니다.
  • mouseUp: 왼쪽 마우스 버튼을 놓으면 액션이 시작됩니다.
  • keyDown: 키를 누르면 액션이 시작됩니다.
  • keyUp: 키를 놓을 때 액션이 시작됩니다. 

     

    우선은 위의 이벤트 핸들러를 몰라도 우선 이런 것들이 있구나 하는 정도로 알아두시면 될 것 같습니다.

    가장 많이 쓰는 것은 enterFrame이라고 할 수 있는데 그만큼 많은 주의를 요하기도 하지요.^^

     

    - 버튼 이벤트의 종류는?

     

  • press: 포인터가 버튼 위에 있을 때 마우스 버튼을 누릅니다.
  • release: 포인터가 버튼 위에 있을 때 마우스 버튼을 놓습니다.
  • releaseOutside: 포인터가 버튼 위에 있을 때 마우스 버튼을 누른 다음 해제하기 전에 버튼 영역 외부로 벗어납니다.      
  • rollOut: 포인터가 버튼 영역 외부로 벗어납니다.
  • rollOver: 마우스 포인터가 버튼 위로 들어옵니다.
  • dragOut: 포인터가 버튼 위에 있을 때 마우스 버튼을 누른 다음 포인터가 버튼 영역 외부로 벗어납니다.
  • dragOver: 포인터가 버튼 위에 있는 동안 마우스 버튼을 누르고 포인터가 버튼 밖으로 벗어난 후 다시 버튼 위로 돌아옵니다.

          버튼 이벤트는 그야말로 버튼에 관계된 이벤트 입니다. 가장 많이 사용하는 것은 release 그리고 press입니다.


    - 키프레임 이벤트의 종류는?

    키프레임 이벤트는 오직 한가지 입니다.

    그것은 플레이헤드, 즉 우리가 플레시작업 창에서 애니메이션한 결과물을 보기위해 enter를 눌렀을때(ctrl Enter 말구욧) 세로로 된 선이 움직이죠. 그것을 플레이헤드라고 합니다.

    암튼, 그 플레이 헤드가 들어갈때 키프레임 이벤트가 발생하죠. 종류는 그래서 오직 한가지입니다.


         * 버튼 이벤트 중 release와 press의 차이는?

           이것은 문제로 남겨둡니다. 생각해보세요~^^

     

    (4) 프레임 제어 액션 : stop(), play(), gotoAndStop(), gotoAndPlay()

        아, 드디어 아는 부분이 나왔네요. 액션을 실행하기 위한 기초적인 매서드이죠. 이것역시 아주 빈번하게 쓰이죠.

    - stop() : 멈추시오.

    - play() : 진행하시오.

    - gotoAndStop() : ~가서 멈추시오.

    - gotoAndPlay() : ~가서 진행하시오.


    “멈추시오.”, “진행하시오.”에서 멈추거나 진행할 주체, 즉 “무엇”에 해당하는 것은?

     

          바로 플레이 헤드 입니다. 플레이헤드를 멈춤으로서 제어가 가능한 것이지요.


    <참고> gotoAndStop(), gotoAndPlay()에서 레이블을 이용할 경우 반드시 문자열사용

     

    여기서 잠깐, 메서드는 무엇일까요?

    사물을 예로 들어 설명해 볼께요.

    자동차에는 색상, 주인이름, 생산연도 등의 상태가 있죠. 이것들은 자동사의 속성입니다.

    그럼 자동차의 기본적인 역할은 뭐죠?

    그것은 움직이는 것이라고 할 수 있죠. 또한 움직임에는 앞으로 간다, 뒤로간다, 멈춘다 등의 동작이 있습니다.

    이러한 동작들을 메서드라고 할 수 있죠.

     

    즉 속성은 상태를 나타내는 명사, 메서드는 움직임을 나타내는 동사 정도로 해석 할 수 있을 것 같아요.

     

    나중에 좀더 발전해서 메서드는 클래스에 저장된 지정함수의 일종인데 우선은 여기까지~

     

    (5) 변수(variable) vs 상수(constant)

    변수는 말 그대로 값이 변하는 수, 상수는 항상 일정한 값(수)을 의미합니다.

    아래를 참고하세요. 쉽지만 개념을 잡는데 아주 중요합니다. ^^
          

    변수

    - 데이터를 저장하기 위한 공간 (그릇)

    - 변수명 (변수이름)

        - 영문이나 숫자로 이루어져야 하고, _,$를 제외한 특수기호(*, &, ^, %, @,..) 는 사용할 수 없다.

        - 숫자를 사용할 수는 있지만, 첫 글자로 숫자를 사용할 수는 없다. (에러가 나기 쉽습니다)

        - 플래시가 이미 사용하고 있는 예약어는 사용할 수 없다.


    다음 중 변수 명으로 바른 것을 모두 고르시오.(문제 입니다)

    -> lion, a123, _xyz, a*bc, play, gotoAndStop, bird(), 3abc, speedX, score


    - 변수에 데이터를 저장하는 연산자 =

        =의 의미 : 대입하시오.

       좌변 = 우변  ==>  (   우변을 계산하여 좌변에 대입하시요~  )

       a = 20;         20을 a에 대입한다.

       b = a + 30;   ?


    (6) 텍스트 필드 (dynamic text field)

       

     텍스트 필드는 우리가 텍스트를 입력할때 화면에 텍스트가 어떻게 나타나는지, 그리고 어떻게 쓰이는 용도에 따라서 세가   지 타입으로 정해놓은 것이지요. 아마 이것 쉽게 이해하실듯 한데요.

    - static text : 변하지 않는 내용을 표시하기 위한 텍스트 필드

    - dynamic text : 변하는 내용을 표시하기 위한 텍스트 필드

    - input text : 사용자로부터 내용을 입력받기 위한 텍스트 필드


    - dynamic text와 input text는 [properties] 패널의 var 항목에 변수명을 기입하면, 변수와 텍스트 필드가 서로 연결된다.


    (7) random() 함수

     

        랜덤 함수 요놈은 참 재미있는 놈입니다. 그야말로 랜덤하게 무언가를 뽑아주죠. 보통 변수 혹은 배열값을  랜덤(난수)으로

         원할때(?) 사용합니다. 이것 정말 많이쓰이기 때문에 알아두셔야 합니다.


    - random의 의미 : 임의의, 무작위로 선택한.....

    - random(N) : 0부터  N-1까지의 정수 중 임의의 값을 반환한다.

         random(5) : 0,1,2,3,4 중 임의의 수를 반환한다.

         random(3) : 0,1,2 중 임의의 수를 반환한다.

         2 + random(5) : 2부터 6까지의 정수 중 임의의 수를 반환

         시간 나실때 아래를 채워보세요.

         5 + random(8) : (                                       )

         -3 + random(10) : (                                     )

         -7 + random(15) : (                                     )

       

         5부터 16까지의 정수 중 임의의 수를 반환하려면?  ( 5+random(12)   )

       요것두 시간나시면 채우시고~

         -5부터 5까지의 정수 중 임의의 수를 반환하려면?  (                )

         12부터 34까지의 정수 중 임의의 수를 반환하려면? (                )

        a부터 b 까지의 정수 중 임의의 수를 반환하려면? ( 공식 눈치 채셨죠?^^)

        <응용문제>

         100을 중심으로 -10부터 10사이의 값을 반환하려면?  (                )

         150을 중심으로 -30부터 30사이의 값을 반환하려면?  (                )



    (8) 문자열과 수식


    - 수식(expression)

       - 수학적(해석적)의미가 있는 문장

       - 인용부호(이중 따옴표“ ”)를 사용하지 않고 표시

      ex) 5, 20, 15+30


    - 문자열(string)

      - 수학적(해석적)의미가 없는 문장

      - 인용부호(이중 따옴표“ ”)를 사용해서 표시

      ex) "flash", “이순신”, “011-3322-3322”


    - 다음 각 액션스크립트의 결과는?

      “flash" + 5 + 2 + 1     : flash521

      ::~아래는 문제 입니다.

      5 + 2 + "flash" + 5 + (4 + 2) + 1

      "flash" + 5 + 2 + "mx" + 5

      5 + "flash" + random(1) + (3 + 2) + (1 + 7)

     

    (9) + 연산자


    - 수식 + 수식 (산술합)  5+7 --->12

    - 문자열 + 문자열 (연결)  "flash" +"mx"  ---> flashmx

    - 문자열 + 수식 (수식을 문자열 취급해서 연결)  "flash" +8 --->flash8

     ::역시 문제입니다. 풀어보세요~

      "flash" + random(1) + 35의 결과는?

      10 + 5 + "flash" + 5 + 2의 결과는?  

      10 + "flash" + (5 + 2) + 5의 결과는?

      8 + "flash" + (5 + 2) + (5+9)의 결과는?


    (10) Number() 함수


    - 문자열을 수식으로 변환해주는 함수 Number("20") -> 20,  Number("12.4") => 12.4

    - 외부(키보드 입력, 외부 텍스트, db로 부터)에서 들어온 변수 값은 모두 (  문자열    )로 처리된다.

      따라서 외부에서 들어온 변수값을 숫자로 변환해 줄때 Number() 함수가 요긴하게 쓰이죠^^


    <참고> : Number() 함수는 첫 글자가 대문자로 시작한다는 점을 기억해 두세요.


    (11) if문

        이것은 나비의 꿈님 수업시간에 했던 것이죠. 워낙 중요하기때문에 한번더!! 보고 넘어가죠

    - "만약 AAA 하면 BBB하고, 그렇지 않으면 CCC 하시오."

    - 만약 -> ( if ),  AAA -> ( AAA   ),   그렇지 않으면 -> ( else    ), 그렇지 않고 만약 -> ( else if       )


    if(조건){

       명령문;

    }

    if(조건){

       명령문1;

    }else{

       명령문2;

    }

    if(조건1){

      명령문1;

    }else if(조건2){

      명령문2;

    }else{

      명령문3;

    }


    조건

    같다

    다르다

    작다

    크다

    작거나 같다

    크거나 같다

    그리고

    또는

           ==

            !=

            <

             >

             <=

            >=

          &&

          ||


    - <참고> else if의 경우 else와 if 사이를 한 칸 띄워준다. (elseif <-- 오류남)

    - 90점 이상 100점 이하면 A, 80점 이상 90점 미만이면 B, 나머지는 C를 if문으로 쓰면?

    (12) int 함수

         Math.floor()가 있긴 하지만, 저는  int함수도 많이 사용했었어요.

        간단한 값에 쓰일때......(쓰이지 않아도 알아두면 좋은가?)
        - 정수 값을 반환하는 함수 (소수점 이하를 제거하는 함수)

      int(42.22) -> 42,  int(58.3) -> 58


    (13) 버튼 이벤트 중 키보드에 반응하는 이벤트

    on(keyPress "<Enter>"),  on(keyPress “<Left>”) 





    [출처]
    액션스크립트 기본|작성자 상군