전공/실무

[flash]drag&drop

하루는노력 2012. 12. 6. 20:06
728x90
반응형

플래시는 참 재미 있는 프로그램 툴인 언어라고 생각합니다.
시각적인 효과가 충분하죠.
그렇지만 보안의 문제로 인해 요즘은 많은 환경에서 플래시 지원을 하는데 보수적인 경향을 보입니다.
그래도 재미 있는 효과는 한번쯤은 해볼 수 있겠지요?

플래시의 액션스크립트를 드래그 앤 드랍 하는 샘플 소스의 전체를 공유 합니다.
바로 복사해서 돌려보고 주석과 내용들을 확인하며 공부해 보세요~

drag&drop

//mcA1, mcA2, mcB1, mcB2로 구성된 Drag & Drop

_global.muntl=this;

var dragMc = 2;//갯수
var swapDepths = 0;//창 위로
var posArr = [dragMc];//mcB에 올려진 mcA의 정보

function init(){
     for(i=1; i<dragMc+1; i++){
          saveArr[i-1] = 0;//배열 초기화
          posArr[i-1] = 0;//배열 초기화
          //좌표
          _global["x"+i] = muntl["mcA"+i]._x;
          _global["y"+i] = muntl["mcA"+i]._y;
         
          muntl["mcA"+i].onPress = function(){//클릭시
               _global.NameChk = this._name.charAt(3);//숫자만 가져오기
               this.startDrag();
               this.swapDepths(swapDepths++);
          }         
         
          muntl["mcA"+i].onRelease = muntl["mcA"+i].onReleaseOutside = function(){//마우스 땔대
               _global.hitTest = false;
               this.stopDrag();
               for(j=1; j<dragMc+1; j++){
                    //hitTest
                    if( (muntl["mcA"+_global.NameChk].hitTest(muntl["mcB"+j])) && (posArr[j-1] == 0) ){
                         //for:hit 된 것이 있으며 중복으로 drop되어 있는게 없으면
                         _global.hitTest=true;
                         posArr[j-1] = _global.NameChk;//mcB에 올려진 mcA의 정보
                         muntl["mcA"+_global.NameChk]._x = muntl["mcB"+j]._x;
                         muntl["mcA"+_global.NameChk]._y = muntl["mcB"+j]._y;
                    }else if( posArr[j-1] == _global.NameChk ){//for:hit 된게 없음
                         //for: 돌면서 _global.NameChk이름으로 들어간 배열 확인해서 없애기                        
                         _global.hitTest = false;
                         posArr[j-1] = 0;//mcB에 올려진 정보 초기화
                    }
               }
              
               if( _global.hitTest != true ){
                    muntl["mcA"+_global.NameChk]._x = _global["x"+_global.NameChk];
                    muntl["mcA"+_global.NameChk]._y = _global["y"+_global.NameChk];
               }
          }
     }
}

function resultValue(){//결과값 확인
     for( k=1; k<dragMc+1; k++ ){
          trace(posArr[k-1]);
     }
}

init();

반응형
LIST

'전공 > 실무' 카테고리의 다른 글

[Nodejs] 소켓(socket.io) 연동  (0) 2018.04.03
Nodejs 외부모듈  (0) 2018.02.08
[flash]flash.external.ExternalInterface.call, 함수  (0) 2012.12.06
[flash] 기타 tip  (0) 2012.12.06
[as3.0] URLRequest  (0) 2012.12.06