① 함수 선언하기
함수의 함은 상자라는 뜻으로 상자에 a, b를 넣으면 그 결과가 c로 반환되는 것을 말합니다. 여기에서 함수에 입력되는 a와 b는 매개 변수라 부릅니다.
함수를 선언하는 형식은 다음과 같습니다.
function 함수명(매개변수){
실행할 액션들;
return 반환값;
}
실행할 액션들;
return 반환값;
}
여기에서 매개변수란 함수에 전달하는 변수를 말합니다. 예를 들어 믹서기에 오렌지와 사과를 넣으면 주스가 만들어 진다고 가정합시다. 여기에서 오렌지와 사과는 매개변수가 되고 주스가 반환 값이 됩니다. 매개변수가 2개 이상일 경우 ,(콤마)로 구분하며 반환값은 매개변수를 처리한 결과물입니다.
‘return’이라는 뜻이 ‘반환하다. 보답하다’의 뜻이므로 결과값을 반환하는 예약어로 사용된 것입니다.
function rectArea(x,y){
var area = x*y;
return area;
var area = x*y;
return area;
위 함수는 x와 y를 매개변수로 받아서 두 값을 곱한 결과를 area라는 변수에 대입한 다음, 결과 값을 반환한 것입니다. 여기에서 area 앞에 var이라고 적은 것은 area라는 변수를 지역변수로 사용하겠다는 뜻입니다. 함수에서 사용하는 변수의 경우 var를 붙이지 않으면, 함수가 끝난 다음에도 그 변수가 계속 남아있기 때문에 불필요하게 메모리를 사용하게 됩니다. 따라서 함수 내에서만 사용하는 변수의 경우에는 가능한 var를 선언하는 것이 좋습니다.
② 함수 호출하기
변수 = 함수의경로명.함수명(매개변수);
일반적으로 함수가 return에 의해 값을 반환하는 경우에는 그 반환 값을 다른 변수에 대입하게 됩니다. 이렇게 함수를 사용하는 것을 ‘함수를 호출한다’라고 말합니다.
여기에서 함수의 경로명은 함수가 선언된 무비클립의 경로명을 뜻합니다. 예를 들어 메인타임라인(_root)에 func1이라는 함수명으로 선언된 함수를 호출할 경우에는 '_root.func1(매개변수)‘라고 적으면 되고, 메인 타임라인(_root)의 ’bird'라는 무비클립에 func2라는 함수명으로 선언된 함수를 호출할 경우에는 ‘_root.bird.func2(매개변수)’라고 적으면 됩니다. 즉 함수의 경우에도 변수와 같이 함수가 선언되어 있는 무비클립이 함수의 주인이 되므로, 함수를 호출할 경우에는 반드시 함수의 주인이 되는 무비클립 경로명을 함께 적어야 합니다.
메인 타임라인(_root)에 'rect.Area'라는 함수를 이용해서 가로20, 세로6인 사각형의 넓이를 구해서 그 결과를 myArea에 저장하는 스크립트를 작성해봅시다.
여기에서 함수의 경로명은 함수가 선언된 무비클립의 경로명을 뜻합니다. 예를 들어 메인타임라인(_root)에 func1이라는 함수명으로 선언된 함수를 호출할 경우에는 '_root.func1(매개변수)‘라고 적으면 되고, 메인 타임라인(_root)의 ’bird'라는 무비클립에 func2라는 함수명으로 선언된 함수를 호출할 경우에는 ‘_root.bird.func2(매개변수)’라고 적으면 됩니다. 즉 함수의 경우에도 변수와 같이 함수가 선언되어 있는 무비클립이 함수의 주인이 되므로, 함수를 호출할 경우에는 반드시 함수의 주인이 되는 무비클립 경로명을 함께 적어야 합니다.
메인 타임라인(_root)에 'rect.Area'라는 함수를 이용해서 가로20, 세로6인 사각형의 넓이를 구해서 그 결과를 myArea에 저장하는 스크립트를 작성해봅시다.
myArea = _root.rectArea(20, 6);
② 눈 내리는 함수 만들기
함수를 이용하여 눈 내리는 플래시를 만들어보겠습니다. 함수를 이용하여 어떠한 효과를 낼 수 있는지 각자 만들어봅시다.
※ ‘snow_mc’라는 무비클립을 만들고 1프레임에 아래의 소스를 삽입해봅시다.
※ ‘snow_mc’라는 무비클립을 만들고 1프레임에 아래의 소스를 삽입해봅시다.
depth = 0;
function makeSnow(){
_mc = snow_mc.duplicateMovieClip("snow_mc" + depth, depth);
_mc._x = random(550);
_mc._y = -10;
_mc._width = _mc._height = 2 + random(8);
_mc.xSpeed = (-20 + random(41)) / 10; // -2~2
_mc.ySpeed = 2 + random(5); // 2~6
_mc.onEnterFrame = function(){
this._x = this._x + this.xSpeed;
this._y = this._y + this.ySpeed;
if(this._y > 400){
this.removeMovieClip();
} // if
}; // onEnterFrame
depth++;
} // makeSnow
this.onEnterFrame = function(){
for(i=0; i<8; i++){
makeSnow();
} // for
}; //onEnterFrame
function makeSnow(){
_mc = snow_mc.duplicateMovieClip("snow_mc" + depth, depth);
_mc._x = random(550);
_mc._y = -10;
_mc._width = _mc._height = 2 + random(8);
_mc.xSpeed = (-20 + random(41)) / 10; // -2~2
_mc.ySpeed = 2 + random(5); // 2~6
_mc.onEnterFrame = function(){
this._x = this._x + this.xSpeed;
this._y = this._y + this.ySpeed;
if(this._y > 400){
this.removeMovieClip();
} // if
}; // onEnterFrame
depth++;
} // makeSnow
this.onEnterFrame = function(){
for(i=0; i<8; i++){
makeSnow();
} // for
}; //onEnterFrame
③ 떨어지는 별 만들기
동일한 방법으로 별 무비클립을 만든 후에 아래 스크립트를 삽입해봅시다.
// 모든 변수는 init에 선언합니다.
// initialize : 초기화 하다.. :: init
function init(){
depth = 0;
}
function makeStar(){
// 1. 복제
_mc = star_mc.duplicateMovieClip("srar_mc" +depth, depth);
// 2. 초기설정
_mc._x = random(550);
_mc._y = -20;
_mc.ySpeed = 3 + random(6);
// 3. 매 프레임마다 할 일
_mc.onEnterFrame = function(){
this._y = this._y + this.ySpeed;
this._rotation = this._rotation + 5;
if(this._y > 400){
this.removeMovieClip();
} // if
} // onEnterFrame
// 4. 다음번 복제를 위해 depth 1 증가
depth++;
}
// 가끔씩.... makeStar() 호출
this.onEnterFrame = function(){
if( random(50) == 0 ){
makeStar();
}
}
init();
// initialize : 초기화 하다.. :: init
function init(){
depth = 0;
}
function makeStar(){
// 1. 복제
_mc = star_mc.duplicateMovieClip("srar_mc" +depth, depth);
// 2. 초기설정
_mc._x = random(550);
_mc._y = -20;
_mc.ySpeed = 3 + random(6);
// 3. 매 프레임마다 할 일
_mc.onEnterFrame = function(){
this._y = this._y + this.ySpeed;
this._rotation = this._rotation + 5;
if(this._y > 400){
this.removeMovieClip();
} // if
} // onEnterFrame
// 4. 다음번 복제를 위해 depth 1 증가
depth++;
}
// 가끔씩.... makeStar() 호출
this.onEnterFrame = function(){
if( random(50) == 0 ){
makeStar();
}
}
init();