전역,지역 변수를 설명하기에 앞서..
선언된 변수의 유효 범위에 대해서 알아보겠습니다.
변수
↓
▶ 타임라인 변수
: 같은 타임라인 내에서만 유효. 타임라인에서의 위치가 같다면
함수 구문(if,while,등등..)안이든 밖이든 같은 변수로 인식
▶ 전역 변수
: 위치의 관계없이 전역 변수로 선언되면 어느 위치에서나 같은 변수로 인식
▶ 지역 변수
: 특정 or 지역 변수의 함수 구문안에서만 유효. 자세한건 아래에서 설명.
타임라인 변수
보통 흔히 쓰이는 변수가 바로 타임라인 함수이며
같은 타임라인에 위치한다면 무비클립을 제외하고 버튼이나 프레임 어디에 위치해도 동일한 변수로 인식.
ex) 1프레임에 car라는 변수가 있고 10프레임에 car라는 변수가 있으면
이 둘은 같은 변수로 인식하지만, 1프레임에 car라는 변수와 1프레임이 위치한 어떤 무비클립의 타임라인 안에도
car라는 변수가 있다면 이 둘은 전혀 다른 변수로 인식. 동일한 타임라인 선상에 위치하지 않기 때문
※심화 : 1프레임에 car = 5라 선언하고 1프레임에 있는 버튼에 on(press) { trace(car) } 라 입력했다면..
버튼을 눌렀을때 5가 출력된다. 그러나 버튼이 아닌 무비클립에 onClipEvent(load) { trace(car) } 라 했다면..
출력창에는 undefined가 출력된다. 무비클립도 자신만의 타임라인을 가지기 때문에 메인 타임라인 1프레임의
car라는 변수를 인식하지 못한것이다. 제대로 된 값이 나오게 하려면 car라는 변수를 아예 무비클립 안에서 선언하던지
아니면 onClipEvent(load) { trace(_root.car) }처럼 경로를 지정하여 car라는 변수가 위치한 곳을 알려줘야 한다.
전역 변수
MX 이후 버젼부터 완벽하게 지원하기 시작한 변수로서, _global이란 속성을 이용해 지정한다.
메인 타임라인에 _global.car = 5 라 하고 타임라인에 위치한 무비클립에
onClipEvent(load) { trace(car) }라고 하면 5가 출력되는것을 확인할수있다.
타임라인 변수에서는 정확한 경로를 지정해야 했으나, 전역 변수는 _global이라는 속성을 사용해
_global.car = 5 즉, car = 5라는 변수가 전역..어디서든지 사용이 가능하도록 선언한것이다.
※주의 : 역으로는 사용이 불가능하다. 예를들어 무비클립 안에서 전역으로 선언하고
메인 타임라인에서 불러낸다면 안된다. _global은 메인 타임라인에서만 선언이 가능하다.
지역 변수
지역변수는.. 한마디로 사용자 정의 함수등을 지정할때 사용되는 변수이다.
즉, 어떤 변수가 특정한 자신이 지정한 범위 내에서만 인식하도록 만들때 유용한 기능이다.
자세한것은 예제로 설명.
주 : fuction xxxxx() { xxxxx } 는 사용자 정의 함수이다.
메인 타임라인에
car = 10
function First() {
trace(car)
}
function Second() {
var car = 5
trace(car)
}
trace(car)
First()
Second()
라고 입력하여 First와 Second라는 지정된 값을 출력하는 사용자 함수를 만들었다.
이것을 실행해보면.. 출력창에는 10,10,5 가 출력된다. 해석해보면.. 맨처음 car = 10으로 정의했기 때문에
마지막 세번째줄 trace(car)는 10을 출력하고, 두번째줄 사용자함수 First는 지역변수이지만 그 안에서 정의된
변수가 없기 때문에 메인 타임라인에 선언되었던 car = 10 값을 받아 10을 출력한다. 마지막으로..
사용자함수 Second는 메인 타임라인에 car = 10이 있음에도 불구하고..사용자 함수 내에서
자신만 사용가능한 car라는 변수를 한번더 선언했다. 따라서 5가 출력되는 것이다. 즉, 이름이 같은 변수라도
사용자 함수 내에서 정의하지 않았다면 구문밖..즉 자신보다 상위에 있던 car변수를 불러오지만
구문안에서 따로 정의했다면.. 상위루트에서 _global을 썼어도..그 구문안에서는 무엇을 하든간에
car라는 변수는 구문안에서 지정한 값만을 인식한다.
출처 - 클라리스 님 블로그


0