NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • NGM 6
  • 매뉴얼

    NGM 6

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 함수 상자 - 함수 - 이벤트 삭제. (Functionbox, Function, Remove Event)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 엔지엠 에디터 6.2.1.1 버전에서 마우스, 키보드 또는 시간 관련된 다양한 이벤트들이 추가 되었습니다. 이벤트를 등록해서 사용하면 기존에 할 수 없었던 많은 부분들을 더 쉽게 처리할 수 있으며 정확한 타이밍에 원하는 스크립트를 실행할 수 있습니다. 하지만, 이벤트를 한번 등록해두면 계속해서 동작이 반복되므로 문제가 될 수 있습니다. 예를 들어서 마우스 왼쪽 다운 이벤트를 등록했다고 생각해보세요. 사용자가 마우스 왼쪽을 눌렀을 때 이벤트를 통해 이동한 위치에 마우스 클릭 액션이 있으면 어떻게 될까요? 여러분들이 예상하는것과 같이 이벤트가 한번 더 발생하게 됩니다.

     

    엔지엠 에디터 또는 다른 프로그램에서 마우스를 클릭하더라도 이벤트는 발생하기 때문입니다. 그렇다면 마우스 다운 이벤트를 등록하면 해당 루틴 안에서는 마우스 다운 또는 마우스 클릭과 같은 액션을 사용할 수 없을까요? 그렇지는 않습니다. 등록된 이벤트를 삭제하고, 루틴을 실행한 후 다시 이벤트를 등록하면 됩니다. 다소 복잡하게 느껴질수도 있으나 개발자들도 이벤트를 추가하고, 해당 이벤트가 발생할 때 중복 또는 버블링 현상을 방지하기 위해 이벤트를 삭제했다가 다시 추가해서 사용합니다. 간단한 예제를 확인하기 위해 아래와 같이 스크립트를 작성 해줍니다. (첨부 파일)

    xR7mAgC.png

     

     

    이 스크립트를 실행하면 뭔가 의도한데로 동작하지 않고 부자연스러움을 느끼실겁니다. 이유는 간단한데요. 위에서도 언급했듯이 마우스 왼쪽과 오른쪽 다운 이벤트를 등록 후 이 이벤트로 이동한곳에 마우스 클릭이 있기 때문에 이벤트가 중복해서 발생하기 때문입니다. 또한, 마우스 다운과 업이 한쌍으로 명령을 수행하고 해제합니다. 이 때 너무 빠른 속도로 인해 마우스가 릴리즈 되기 전 이벤트가 이동하고 마우스 다운이 다시 발생합니다. 이 타이밍에 걸리면 더블 클릭과 같은 현상이 발생하기도 합니다. 좀 더 자연스러운 스크립트를 만들려면 [ 클릭 ] 액션을 [ 이동 ] 액션으로 변경해보면 됩니다.

    wUpB020.png

     

     

    수정한 스크립트를 실행한 후 마우스 왼쪽과 오른쪽을 클릭해보세요. 내 컴퓨터와 내 문서로 마우스가 이동하는걸 확인할 수 있습니다. 하지만, "난 클릭을 사용하고 싶은데..."라고 할 수 있겠죠? 예를 들어 왼쪽 클릭하면 연속으로 10번 더 클릭하고 싶을수도 있습니다. 마우스 광클릭이나 연타처럼요~ 우선, 스크립트를 다시 원본 상태로 설정하고 아래 그림을 참고해서 함수에 있는 이벤트 삭제 액션을 추가해줍니다. 이 액션은 이벤트에 설정한 아이디로 타겟팅해서 삭제할수도 있고, 등록된 모든 이벤트를 삭제할수도 있습니다.

    12q2ox5.png

     

     

    이벤트를 삭제했으므로 두번째부터는 마우스를 왼쪽 오른쪽 다운하더라도 이동이 안됩니다. 삭제한 이벤트를 루틴이 끝난(마우스 클릭) 후 다시 등록해야 합니다. 여러분들도 아래 그림을 참고해서 이벤드 2개를 각각 루틴이 끝나는 액션 아래에 복사해주세요.

    OLJuVsM.png

     

     

    다시 실행해보면 정상 동작하죠? 생각해보니 이 로직에는 약간의 문제가 있습니다. 처음에 2개의 이벤트를 등록하고, 마우스 왼쪽을 클릭하면 등록된 모든 이벤트가 삭제됩니다. 그리고, 자기 자신의 이벤트 하나만 복사해서 붙여넣기 했습니다. 따라서, 마우스 오른쪽 클릭은 더이상 동작하지 않게 됩니다. 여러분들도 이렇게 되었을겁니다. 아래와 같이 이벤트를 처음과 동일하게 2개씩 등록해줘야 합니다.

    5UnRtcg.png

     

     

    스크립트를 실행(Ctrl+Alt+F8) 해보면 아래 동영상과 같이 의도한데로 잘 동작되는걸 알 수 있습니다.

    HWzoIUH.gif

     

     

    이 방법 말고도 이벤트에 아이디를 설정하고, 이벤트 삭제 액션의 이벤트 아이디 속성에서 삭제하고 싶은 이벤트만 선택해도 됩니다. 이렇게하면 좀 더 깔끔하게 스크립트를 만들수 있지만, 관리 측면에서 누락되는 이벤트가 발생하거나 정상적으로 종료되지 못하는 문제가 생길수도 있습니다. 이런 부분들을 잘 만든다면 기존의 매크로 프로그램들보다 더 막강한 스크립트를 제작할 수 있을겁니다.

     

    속성 정보

    QGAPfu5.png

     

     

    기본 작업

    • 사용 여부: 이 액션의 사용 여부를 설정합니다. False로 설정하면 이 액션은 실행되지 않습니다.
    • 설명: 이 액션의 부가적인 설명을 입력합니다.
    • 실행 전 지연: 이 액션이 실행되기 전 지연 시간을 입력합니다.
    • 실행 후 지연: 이 액션이 실행된 후 지연 시간을 입력합니다.
    • 실행율: 이 액션을 실행하는 확률입니다. (기본값은 무조건 실행이며, 50으로 설정하면 50프로 확률로 실행하거나 건너뛰게됩니다.)
    • 아이디: 스크립트 내에서 유니크한 아이디를 입력합니다.

     

    변수

    • 가져오기: 글로벌 또는 로컬 변수에 저장되어 있는 값을 이 액션의 속성 값으로 가져옵니다.
    • 추가하기: 이 액션의 속성 값을 글로벌 또는 로컬 변수에 저장합니다.

     

    작업

    • 이벤트 아이디: 삭제할 아이디를 선택합니다.
    • 전체 삭제: 현재 스크립트에 등록된 모든 이벤트를 삭제합니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    첨부파일

    댓글목록

    등록된 댓글이 없습니다.