테스트 사이트 - 개발 중인 베타 버전입니다

flash에서 마우스 오른쪽 버튼 사용하기

flash 에서 오른쪽 마우스를 사용 하기 위해서
ASnative 를 이용해서 dispatch 한 이벤트를 실행합니다.
버튼, 무비클립 클릭 용으로 만들었습니다.

swf 파일을 html에서 embead 할 때 menu=false로 지정 합니다.
 그래야 flash 상에서 메뉴 버튼이 나타나지 않습니다.

flash의 1번째 프레임에 다음과 같이 선언 합니다.
소스는 actionscript 를 조금만 할 줄 알면 누구나 이해 할 수 있음으로,, 설명은 생략 ...


var EventStack:Array  =new  Array();
this.onEnterFrame = function() {
 //dispitchEvent by MouseRightBtnClick
 
 if (ASnative(800, 2)(2)) {
  //객체 찾기
  var temp:Array=find_object(this._currentframe);
  for(i:Number=0; i<temp.length; i++){
   if(is_mouseOver(this[temp[i].eventTarget])==true){
    //method call;
    var method:String = temp[i].tirggerMethod;
    this[method]();
    removeEventStack(temp[i].frameNo,temp[i].eventTarget,temp[i].tirggerMethod);
   }//end if
  }//end for
 }//end if
}//end EnterFrame

//등록
function regist(frameNo:String,eventTarget:String,tirggerMethod:String):Void{
 var defaultObj:Object = new Object();
 defaultObj.frameNo=frameNo;
 defaultObj.eventTarget=eventTarget;
 defaultObj.tirggerMethod =tirggerMethod;
 EventStack.push(defaultObj);
}

// is mouseOver
function is_mouseOver(o:Object){
 var is:Boolean=false;
 if(o.hitTest(_root._xmouse,_root._ymouse, false)){
  is=true;
 }
 return is;
}
function find_object(frameNo:String):Array{
 var objArray:Array = new Array();
 for(i:Number=0; i<EventStack.length; i++){
  if(EventStack[i].frameNo==frameNo){
   objArray.push(EventStack[i]);
  }
 }
 return objArray;
}
function removeEventStack(frameNo:String,eventTarget:String,tirggerMethod:String){
 for(i:Number =0; i<EventStack.length; i++){
  if(EventStack[i].frameNo==frameNo){
   if(EventStack[i].eventTarget==eventTarget){
    if(EventStack[i].tirggerMethod==tirggerMethod){
     array_slice(EventStack,i);
     break;
    }
   }
  }
 }
}
function array_slice(target_array:Array, target_num:Number){
 for(var i=0; i<target_array.length; i++){
   if(i==target_num){
    target_array.splice(i,1);
   }
 }
}


마우스 오른쪽 버튼을 클릭 할 위치에
 
stop();
//_currentframe 현제 프레임 번호 , bg1 <-- 이벤트가 발생할 객체(버튼, 무비클립), fun1 <-- 이벤트가 발생 할 후 호출될 함수 명     함수 명은 수정 될 수 있으나 해당 함수를  반드시 구현 해줘야 한다.

regist(_currentframe,"bg1","fun1");

//callback function
function fun1(){
   //마우스 오른쪽 버튼 클릭시 실행될 내용
 trace("mouseclick");

}

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 3개

오오 대박대박
그러나 이방법도 완벽한 해결 방법은 아님을 참고 해주세요;

게시글 목록

번호 제목
3182
3171
3165
3163
14999
14998
14991
14984
14982
14979
14978
14977
3155
14976
14963
14960
14957
3151
3143
14951
3135
3132
14948
14941
29815
14939
14936
14935
3119
3113
14933
14929
3110
14928
14923
14921
3091
3087
3078
26068
3067
24252
14918
3061
3059
3053
14915
3049
14912
14911
14909
3040
3033
3027
3022
14908
24246
14905
3015
14904
14899
3007
14884
24241
3001
2997
14880
2991
2984
14879
2975
24232
14872
2970
24231
2967
2958
14864
2952
14858
24230
14850
2950
14848
14846
14845
14839
2944
2932
14833
14832
14830
2927
14826
26056
2921
2911
14824
2906
2889