본문 바로가기

[플래시 액션 스크립트 2.0]_global 를 사용한 전역함수 만들기 (펌)

반응형

_global이라는 예약어를 사용하여 함수를 선언하면, 경로명 없이 함수의 이름만으로도 함수를 호출할 수 있습니다.

 

_global.함수명 = function(매개변수) {

  실행할 액션들;

};

 

-------------------------------------------------------------------------------------------

예제문]

// 무비클립을 (targetx, targety)로 회전시키는 함수
_global.rotateTo = function(mc, targetx, targety){
 var diffX = targetx - mc._x;
 var diffY = targety - mc._y;
 mc._rotation = Math.atan2(diffY, diffX)*180/Math.PI;
};
// 무비클립을 (targetx, targety)로 부드럽게 이동시키는 함수
_global.smoothMove = function(mc, speed, targetx, targety){
 mc._x += speed*(targetx - mc._x);
 mc._y += speed*(targety - mc._y);
};
// 마우스 커서 숨김
Mouse.hide();
// rect 무비클립을 드래그 시킴
_root.rect.startDrag(true);
// nabi 무비클립이 마우스를 따라 부드럽게 움직이게 함
_root.nabi.onEnterFrame = function(){
 rotateTo(this, _root._xmouse, _root._ymouse);
 smoothMove(this, 0.03, _root._xmouse, _root._ymouse);
};

-------------------------------------------------------------------------------------------

 

- 함수의 범위와 삭제

 

_global.myFunc = function(a, b) {

  return a + b;

};

function myFunc(a, b) {

  return a - b;

};

myValue = myFunc(10, 5);

 

플래시에서 경로명 없이 함수를 호출하며느 먼저 함수가 호출된 위치에 해당 함수가 선언되어 있는지 확인해 보고, 그 함수가 없다면 _global에서 해당 함수를 찾게 됩니다. 따라서 위 액션스크립트의 경우 myFunc(10, 5)을 호출하면, 먼저 함수가 호출된 myFunc()가 선언되어 있는지 확인하는데, 함수가 선언되어 있으므로 _global에 선언된 myFunc()가 불려지지 않고 그 아래쪽에 있는 myFunc()함수가 호출됩니다. 따라서 myValue에는 10에서 5를 뺀 5라는 값이 저장됩니다.

 

선언된 함수를 삭제하기 위해서는 delete라는 예약어를  사용하면 됩니다.

 

delete 함수명;

 

-------------------------------------------------------------------------------------------

예제문]

_global.myFunc = function(a, b) {

  return a + b;

};

function myFunc(a, b) {

  return a - b;

}

myValue1 = myFunc(10, 5);     // myValue1은 5가 저장

delete myFunc;                     // function myFunc(a, b)가 삭제

myValue2 = myFunc(10, 5);     // myValue2는 15가 저장

delete myFunc;                     // _global.myFunc = function(a, b) 삭제

myValue3 = myFunc(10, 5);     // myValue3는 undefined


반응형