스크립트
스크립트(Script)는 차례대로 실행되는 일련의 명령어 입니다. 지오지브라는 '지오지브라스크립트(GGBScript)'와 '자바스크립트(Javascript)' 두가지 스크립트 언어를 지원합니다. 실행은 다음 동작에 의해 시작됩니다.
- 특정 객체 클릭
- 특정 객체 업데이트 (객체의 값 또는 속성의 변경된 경우)
- 파일 로딩 (자바스크립트의 경우)
- 자바스크립트 리스너(listeners) (참고: 자바스크립트)
스크립트 탭을 통해 스크립트를 설정할 수도 있습니다. (참고: 속성 대화창)
지오지브라스크립트
입력창을 이용해 지오지브라 명령어를 구성하는 것과 같이 스크립트를 만들 수 있습니다. 스크립트가 작동된 후에는 명령어가 순차적으로 실행됩니다.
예:
- 정수 a를 1에서 3까지(1씩 증가하는) 슬라이더 만들기
- 입력 :
list1 = {"red", "green", "blue"}
- a의 속성에서 스크립트를
SetColor[a, Element[list1, a]]
로 설정한다. - 슬라이드를 움직여 색이 바뀌는 것을 확인한다.
설명: 슬라이더를 움직일 때마다 업데이트가 됩니다. 그러면, 스크립트에서 호출되는 움직임에 따라 a의 값이 리스트 중 한 색상을 얻고 슬라이더 a의 색깔을 변화시킵니다.
참고: 명령어는 #
으로 시작합니다.
힌트: 스크립트에서만 사용되는 명령어가 있습니다. Scripting Commands 페이지를 참조하세요.
자바스크립트
자바스크립트는 인터넷에서 많이 사용되는 프로그래밍 언어 입니다. 지오지브라 스크립트와 달리 자바스크립트는 간단한 명령어로 수행되지는 않지만, if, while, for
등의 제어문을 사용할 수 있습니다. 일반적인 자바스크립트의 경우 모질라 사이트와 같이 좋은 참고 사이트가 있습니다. 자바스크립트를 이용하면 지오지브라의 구조 자체를 변경할 수 있습니다. 이러한 메서드(method)들은 ggbApplet.method_name(parameter, ... , parameter)
와 같이 ggbApplet 객체에 속합니다. 이 메서드들에 대해 자세히 알기 위해서는 다음을 참조하시기 바랍니다. 참조: JavaScript
예:
for(var i=0; i<10 ; i++){ ggbApplet.evalCommand("A_"+ i + "=(random()*10, random()*10)"); }
이 스크립트는 A0에서 A9까지 10개의 점을 랜덤으로 좌표상에 생성합니다.
참고: 자바스크립트는 상당히 다용도 효용만점이지만, 대부분의 작업은 지오지브라 스크립트로도 가능합니다.(for문과 같은 반복문을 사용할 것이 아니라면 지오지브라 스크립트의 사용을 권장합니다.)
글로벌 자바스크립트
글로벌 자바스크립트는 속성대화창의 스크립트 탭에서 함수를 정의할 수 있으며(단, 변수는 정의할 수 없음) 이 함수는 다른 스크립트에서 이용가능합니다. 또한, ggbOnInit()와 같이 지오지브라가 시작될 때 자동적으로 수행되는 함수를 정의할 수도 있습니다. ggbOnInit함수는 다음과 같이 리스너(listener/프로그램에서 어떤 동작을 받아 들임)를 등록할 때 사용할 수 있습니다.
예:
function onAdd(name){ alert("Object " + name + " was added."); } function ggbOnInit(){ ggbApplet.registerAddListener("onAdd"); }
먼저, 함수 onAdd를 정의한다. onAdd 함수는 매개변수 name에 의해 다른 메시지 창을 보여준다. 이제 ggbOnInit함수를 이용해 지오지브라 파일이 시작될 때 마다 스크립트를 실행하게 하는데, ggbApplet 객체 에서 새로운 대상이 등록될 때마다 그 대상을 감지하는 리스너 registerAddListener 를 이용하여 onAdd 함수를 시행시킨다. 예를 들어, 점 A를 새로 만들었을 경우 자동적으로 "Object A was added."라는 메시지 창이 나타난다.
또한, 이름 변경하기, 삭제하기, 깨끗히 하기 등의 작업에 리스너(listener)를 사용할 수 있습니다. 리스너의 전체 목록은 다음을 참고하시기 바랍니다. 참고: JavaScript
참고: ggbOnInit 함수 외부에서 ggbApplet 메서드를 사용하면 동작하지 않습니다. 왜냐하면, 지오지브라가 로드되기 전에 ggbApplet 메서드가 호출되기 때문입니다.