NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

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

    스크립트 조건에 따라서 스크립트 실행하는 방법. (How to run a script based on a condition.)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 엔지엠 매크로에는 조건에 따라 스크립트를 실행하거나 중지 또는 일시중지할 수 있는 액션이 포함되어 있습니다. [ 스크립트 실행 ], [ 스크립트 중지 ], [ 스크립트 일시중지 ]를 참고하세요. 이 예제를 따라하기 위해서 아래와 같은 시나리오로 동작하는 스크립트를 만들었습니다. 오랜지 스크립트는 그림판에 오랜지색 점이 있으면 블루 스크립트를 실행합니다. 만약, 오랜지색 점이 없으면 계속해서 이미지 매치로 반복합니다.

    YapO1Mf.png

     

     

    블루 스크립트는 반대로 블루색 점을 찾고, 점이 없으면 나타날때까지 반복합니다. 블루색 점이 나타나면 오랜지 스크립트를 실행하죠.

    jGmxgVy.png

     

     

    오랜지 스크립트와 블루 스크립트는 둘다 비동기로 서로를 호출합니다. 또한, 둘다 무한 반복하는 스크립트죠. 이렇게 호출해서 실행되는 스크립트를 서브 스크립트라고 부릅니다. 이 서브 스크립트들은 조건에 [ 서브 스크립트 ]와 시간 카테고리에 있는 [ 타이머틱 ]과 [ 스케줄러 ]도 있습니다. 그림판에 오랜지색 점을 찍고, 오랜지 스크립트를 실행 해보세요.

    YlT2gma.png

     

     

    오랜지 스크립트가 실행되면, 오랜지색 점을 찾고 블루 스크립트를 실행합니다. 블루색 점은 없으므로 오랜지 스크립트를 실행하지는 않죠. 다만, 오랜지 스크립트가 다시 오랜지색 점을 찾게되므로 블루 스크립트가 다시 실행됩니다. 결과를 확인 해볼까요? 아래와같이 블루 스크립트가 여러번 실행된것을 확인할 수 있습니다.

    oyBPzpL.png

     

     

    이런 결과가 나오는건 실행된 스크립트에서 호출하는 스크립트는 부모 스크립트의 하위에 추가되서 관리되기 때문입니다. 이걸 이해하기가 쉽지 않을듯합니다. A에서 B를 실행하면 A 내부에 B가 저장되고, 실행합니다. 이 때 A를 중지하면 A안에 있는 B가 중지되고 A가 중지됩니다. 자 여기서 문제가 발생됩니다. A가 B를 실행하면 B는 A에 속합니다. B가 A흘 호출하면 B안에 A가 저장되죠. 여기서 첫번째 A는 B를 알고 있고 두번째 B는 첫번째 A를 모릅니다. 그렇기 때문에 계속해서 누적되어 실행되게 됩니다. 물론, 무한 반복하는 스크립트가 아니라면 문제가 되지 않을겁니다. 실행과 중지를 잘 구성한다면 말이죠. 하지만, 서로가 상호 보완하는 방식으로 동작하는 스크립트라면 중복되면 안되겠죠? 그래서, 중앙에서 스크립트를 통제할 수 있도록 옵션이 제공되고 있습니다. 아래 그림과 같이 오랜지와 블루 스크립트의 "글로벌 스크립트" 속성을 True로 변경하세요.

    kHPpkPS.png

     

     

    이렇게하면 서브 스크립트들은 매인뷰에서 관리됩니다. 중앙 저장소에서 서브 스크립트들이 관리되기 때문에 중복되서 실행하지 않습니다. 따라서, 오랜지 스크립트에서 조건이 맞지 않으면 블루 스크립트가 실행되고 블루 스크립트에서 특정 조건을 달성하면 다시 오랜지 스크립트가 실행됩니다. 정확하게는 오랜지 스크립트가 실행되는건 아닙니다. 이미 오랜지는 무한 반복중이기 때문에 오랜지 스크립트를 실행하면 이미 실행중이라는 메시지가 표시됩니다. 이번에 실행 후 중지하면 반복 횟수가 8번인데도 블루 스크립트가 1번 종료되고 오랜지 스크립트가 종료됩니다.

    6Xf6ipW.png

     

     

    그림판에서 블루색 점을 찍어보면 오랜지 스크립트가 이미 실행중이라는 메시지가 표시됩니다. 이는 블루 스크립트가 조건에 부합되어 오랜지 스크립트를 실행했다는 의미입니다. 아래 로그를 보면, 처음 오랜지 스크립트에서 블루 스크립트를 실행하고 블루색 점을 찍었을 때 오랜지 스크립트를 실행합니다. 하지만, 글로벌 스크립트로 등록되어 있기 때문에 이미 실행중인 오랜지 스크립트를 실행할 수 없습니다.

    2nuvCPg.png

     

     

    이런 시나리오는 실제 프로그래밍에서 잘 사용하지 않습니다. 물론, 매크로에서도 그럴거 같고요. 아마 원칙대로라면~ 오랜지 스크립트에서 블루 스크립트를 호출하면 오랜지 스크립트는 중지될겁니다. 그리고 블루 스크립트에서 오랜지 스크립트를 실행하면 블루 스크립트는 중지되어야 하죠. 이런 시나리오를 프로그래밍에서 적용한다면 메모리가 계속 증가하여 나중에는 강제 종료되는 문제가 발생할겁니다. 매인 스크립트에서 어떤 조건에 의해서 다른 스크립트를 불러와서 사용하려면 이 옵션을 잘 이용해야 합니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.