본문 바로가기
♣ 강좌/플래시

메뉴 만들기 (2) for문의 이해

by 칠칠너래 2006. 3. 25.

안녕하세요..보헤 입니다..꾸벅..

오늘 메뉴를 만들기 위해서 알아야 할 for 문에 대해서 알아 보아요^^

 

고급 메뉴바를 위해서는 여러가지 움직임등도 알아야 하지만
반드시 기본적으로 알아야 할 것이 for 문과 this._name 입니다.
위 2가지를 모르면 고급 메뉴바를 만들더라도 엄청 코딩이 길어지게 되면서 각 메뉴마다 다 액션을 걸어 줘야 하는 노가다를 해야만 합니다.

 

먼저 for 문에 대해서 자세히 알아보겠습니다.
for 문이라는 것이 없으면 코딩도 역시 노가다가 될 수 밖에 없습니다.

 

예를 들어 볼께요..

버튼이 5개가 있습니다..
각각의 버튼의 이름은 bn1, bn2, bn3, bn4, bn5 라고 하겠습니다.
그리고 그 버튼을 눌렀다 땠을때
메인타임라인에 있는 m0 라는 무비클립의
1프레임, 2프레임, 3프레임, 4프레임, 5프레임으로 가서 멈춰라는 실행문을 코딩한다고 생각해요.

for 문을 알지 못한다면 아래 보기1) 처럼 코딩을 해야 합니다.

 

보기1)

 

this.bn1.onRelease = function () {
    _root.m0.gotoAndStop(1)
}
this.bn2.onRelease = function () {
    _root.m0.gotoAndStop(2)
}
this.bn3.onRelease = function () {
    _root.m0.gotoAndStop(3)
}
this.bn4.onRelease = function () {
    _root.m0.gotoAndStop(4)
}
this.bn5.onRelease = function () {
    _root.m0.gotoAndStop(5)
}

 

네..이렇게 코딩하면 됩니다......
5개 정도는 가뿐하게 타자 연습한다고 생각하시고 치면 됩니다.
귀차니즘 발동하면 복사해서 붙여넣기 하고 숫자만 바꿔주면 됩니다.
하지만 버튼이 만약 30개 정도 된다면....
복사해서 붙혀 넣기도 넘 힘듭니다...

 

이럴때 for 문을 활용하면 됩니다.


먼저 for 문의 형식부터 정확하게 인식 합니다.

기본형식은 보기2)와 같아요

 

 

보기2)

 

for(초기화 선언문 ; 조건문 ; 증가치) {
   실행할 액션
}

 

보기2)를 보면 어떤 뜻인지 감이 안오죠?

실제로 쓰인 예를 들어 설명 해볼께요.

 

예)

 

for (i = 0 ; i< 3; i++) {
    trace(i)  
}

설명)

 

for (i = 0 ; i< 3; i++) {
    trace(i)  
}

 

초기화 선언문 : i=0
i=0 부터 시작해서

 

조건문 : i<3
i가 3보다 작을때까지

 

증가치 : i++
i를 1씩 증가 시켜라. 즉 i=i+1 이랑 똑같은 결과를 가져옵니다.

 

실행할 액션 : trace(i)
i 의 값을 output창에 보여주세요..

 

 

그럼 결과를 보죠..

 

i = 0 일때


처음 한번 실행하면 i=0 부터 시작해서

조건문에서 i의 값이 조건을 만족하는지 보게 됩니다.
만족하면 실행하고 만족하지 않으면 더 이상 실행하지 않습니다.
조건을 만족하죠?


그래서 실행할 액션인 trace(i) 를 실행합니다. 
따라서 0 이라는 숫자를 output창에 보여주겠죠


그리고 증가치의 숫자만큼 i 의 값을 증가 시킵니다.


만약 증가치가 i++ 이 아니라 i=i+2 라고 적으면 i 의 값은 2씩 증가 됩니다.
여기서는 i++ 이니깐 1씩 증가시키게 되죠

 

그럼 i의 값은 1을 가지게 됩니다.

 

i = 1 일때


조건문을 만족하는지 봅니다. 만족하죠?
그래서 또 실행할 액션을 실행합니다.


따라서 1 이라는 숫자를 output창에 보여줍니다.

 

또 증가치에 따라 i 의 값을 증가시켜 이번에는 i 의 값이 2를 가지게 됩니다.

 

i = 2 일때

 

조건 만족 합니까? 조건 만족 합니다.


따라서 2라는 숫자를 output창에 보여줍니다.

 

또 증가치에 따라 i 의 값을 증가시켜 이번에는 i 의 값이 3을 가지게 됩니다

 

i = 3 일때

 


조건 만족해요? ..안 합니다.

i 의 값이 3보다 작아라고 했는데...i 의 값이 3이랑 같습니다.


따라서 조건을 만족 시키지 않기 때문에 더 이상 실행할 액션을 실행하지 않게 됩니다.

 

이제 for 문에 대해서는 잘 아쉴껍니다.


자 그럼 보기1)을 for 문으로 바꿔봐요.

스크롤 압박을 느끼기 때문에 다시 보기1)을 적어 보겠습니다.

 

보기1)

 

this.bn1.onRelease = function () {
    _root.m0.gotoAndStop(1)
}
this.bn2.onRelease = function () {
    _root.m0.gotoAndStop(2)
}
this.bn3.onRelease = function () {
    _root.m0.gotoAndStop(3)
}
this.bn4.onRelease = function () {
    _root.m0.gotoAndStop(4)
}
this.bn5.onRelease = function () {
    _root.m0.gotoAndStop(5)
}

 

 

위 보기1) 을 혼자서 한 번 for 문으로 바꿔보세요..
혼자서도 잘 할꺼야...♬ 혼자서도 잘 할꺼야.♬..흐흐..이 노래 아시죠?
tv 유치원 주제곡 입니다..

 

보기3)

for (i=1; i<6 ; i++) {
    this["bn"+i].onRelease = function () {
        _root.m0.gotoAndStop(i)
}

 

또는


보기4)

for (i=1; i<=5 ; i++) {
    this["bn"+i].onRelease = function () {
        _root.m0.gotoAndStop(i)
}


보기3) 이나 보기4) 처럼 하셨어요?
보기3) 이나 보기4) 처럼 하셨으면 for 문을 완전히 이해 하신겁니다.

 

["bn"+i]가 이해 안가시면 앞의 메뉴 만들기 (1) [ ] 글을 읽으세요

 

그러나..........


보기3)처럼 하게 되면 우리가 원하는 결과가 나오지 않습니다..ㅠ.ㅠ


결론부터 말하면 버튼을 누르게 되면 m0 라는 무비클립의 6 번 프레임으로 가기 떄문에 우리가 원하는 프레임에 가지 않게 됩니다.

 

저도 첨에는 저렇게 했습니다..


근데 안 되는 겁니다...왜 안 되는지 3일 동안 고생해서 알아냈습니다.
컴퓨터는 거짓말을 하지 않습니다.
왜 그런지 보죠..

 

 

위의 보기3)의 for 문을 보면 버튼을 눌렀을때 i 라는프레임으로 가라고 되어 있습니다.
for문은 실행시키고 나면  i 의 값이 몇일까요?


네..6 입니다..6인 겁니다...


그래서 버튼을 누르면 i 의 값이 6이기 때문에 6프레임으로 가게 되는 겁니다.


우리가 원하는 건

1번 버튼을 누르면 1번 프레임..

2번 버튼을 누르면 2번 프레임으로 가는 건데
i 의 값은 6의 고정값을 가지고 있기 때문에 우리 생각되로 가지 않고

6프레임으로만 가게 되는 겁니다.

 

 

우리가 원하는 결과를 가질려면..아래 보기 5) 처럼 써야 합니다.

 

보기5)

 

for (i=1; i<6 ; i++) {
    this["bn"+i].onRelease = function () {
    this.num = this._name.substr(-1)
        _root.m0.gotoAndStop(this.num)
    }

}

 

 

갑자기 this._name 이 나왔습니다..

그리고 stbstr(-1) 도 나왔습니다.
이 부분은 다음 시간으로 넘기겠습니다.

 

아 그리고 액션 공부 하실때 가장 실력이 빨리 늘어나는 방법은

내공을 쌓는 거라고 저는 생각합니다.

 

내공이 무얼까요?

보기5) 를 처음 봤을때....

무슨 말인지 모르겠다..

그러면 모르는 액션 부분을 체크 합니다.

 

보기5) 에 나온 액션을 한 번 볼까요?

 

for, this, onRelease, function, _name, substr(), _root, gotoAndStop()

 

요렇게 쓰였습니다.

 

여기서 모르는 액션은 반드시 액션 레퍼런스를 찾아서 그 각각의 쓰임에

대해서 정확하게 숙지 하셔야 합니다.

 

이렇게 각각의 쓰임에 대해서 정확한 개념을 아는게 저는 내공이라고 생각합니다.

그 내공을 바탕으로 화려한 잡기술을 익히게 되는거죠^^

 

이번시간의 중요한 것은 for문 입니다.


for 문을 완벽히 이해하셨으면 이번 시간에서 배울 수 있는 걸 소화하신겁니다.