아주 간단하죠. 변수 이름을 쓰고 대입 연산자를 쓴 다음에 초기값을 적어주면
됩니다.
ok라는 이름을 가진 변수를 정했구요. 이 변수의 초기 값에 1을 대입한 것입니다.
if문 속에 다시 if문을 넣어 다음과 같이 썼다고
합시다.
ok라는 변수 값이 1과 같다면(==이라는 점을 꼭 유념) 무비클립을 오른쪽으로 2만큼 이동시키라는
뜻입니다. 여기까지만 쓴다면 지난 시간에 배운 것과 아무런 차이가 안 나죠. 왜냐하면 처음에
ok라는 변수에 1을 대입시켜 놨기 때문에 if(ok==1)이라는 if문의 조건을 언제나 만족시키기 때문
입니다. 하지만 다음과 같이 쓰면 좀 달라지죠.
car라는 무비클립의 x좌표가 300보다 작을 때 ok값이 1과 같을 조건에서 car라는 무비클립의
x좌표값은 2씩 증가합니다. 그러나 더이상 300보다 작지 않을 때에는 car라는 무비클립의 x좌표
값은 10이 되도록 했습니다. 그리고! 그리고 ok의 값에 0을 대입합니다. setInterva에 의해 다시
go함수가 실행되었을 때 무비클립의 x좌표 값이 300보다 작다는 조건은 만족되었지만 ok값이
1과 같지 않기 때문에 _root.car._x=_root.car._x+2;라는 명령문은 실행되지 않는 거죠.
결론적으로 자동차는 오른쪽으로 조금씩 움직이다가 300보다 커지면 10의 위치에 놓이게
되고
더이상 움직이지 않게 되는 것입니다.
이렇게만 만들면 딱 한번 움지이고 맙니다. 결코 상호작용적이라고 말할 수 없게 됩니다.
상호작용이 될려면 적어도 사용자의 어떤 조작에 따라 움직임이 달라져야 하거든요. 다음의
고급 액션을 잠깐 배우고 이를 활용해서 상호작용적인 액션을 만들어 봅시다.
자동차를 클릭했을 때 ok에 1을 대입시키는 코드는 다음과 같습니다.
ok=1;
function go() { if (_root.car._x<300) {
if(ok==1){
_root.car._x = _root.car._x + 2;
} } else
{ _root.car._x = 10;
ok=0;
} } setInterval(go, 25);
_root.car.onRelease = function() { ok =
1; };
이제 자동차가 오른쪽으로 움직이다가 원래 자리로 돌아간 후 멈추어 버립니다. 이제 마우스로
자동차를 클릭하면 다시 오른쪽으로 움직이는 것을 확인할 수 있을 것입니다.
사후 팁 : 코드 줄이기
# 처음에 ok=1;로 변수를 지정하지 않아도 크게 문제되지 않습니다. 어차피 ok가 1이
아니므로
if(ok==1)를 만족
시키지 못하거든요. 그러니까 처음부터 움직이지 않을 뿐 기능상의
문제는 없다는 것입니다. 오히려 더
좋을지도... ^^
# _root.car._x=_root.car._x+2 를 _root.car._x+=2 로 바꾸어도 동일한 의미로
작동합니다.
+= 는 선행 증가 대입
연산자라고 하며 대입(=)을 하기전에 증가(+)시키고 대입하라는
뜻입니다. -=, *=,
/= 가 어떤 뜻인지를 한번 추론 해보세요... ^^
# if(ok==1) 를 if(ok) 로 바꾸어도 동일한 의미로 작동합니다. if문 안의 조건은 만족하거나
만족하지 않거나 하는
2가지의 경우의 수밖에 없습니다. 이는 디지털을 표현할 때
사용하는 0과 1만으로
표현할 수 있다는 뜻입니다. 그래서 if(ok)라고 쓰면 ok값이
1과 같으면 조건을 만족한
것으로 인식하는 것입니다.
# if문 안에 또 if문이 들어갈 경우 하나로 줄일 수 있습니다. 위의 코드의 경우
if(_root.car._x<300 && ok){ _root.car._x+=2; }와 같이 매우 간단히 표현할 수
있죠.
여기서 &&는
"그리고"의 의미입니다. 그러니까 무비클립의 x좌표가 300보다 작고 ok
값이 1과 같을 때에
무비클립을 오른쪽으로 2만큼 이동시키라는 뜻이 되는 거죠.
수학에서 배우는 AND, OR, NOT의 논리 연산자가 바로 &&, ||, !
입니다.
&는 Shift와
숫자 7을 같이 누르면 되구요, |는 Shift와 \(백스페이스 왼쪽에 있는 키)를
같이 누르면 됩니다. !는
Shift와 숫자 1을 같이 누르면 되구요. ^^
3. 과제(변수를 활용하여 if문을 작성할 수
있다.)
1. 마우스로 클릭하면 그림이 조금씩 회전하면서 작아지게 할려면 어떻게 해야할까? (힌트
없음)
2. 마우스를 클릭하면 그림이 조금씩 사라지게 만들려면 어떻게 해야할까? (힌트 없음) |