SqueakByExample:11.2

From 흡혈양파의 번역工房
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

morph 의 조작

morph 는 객체이기 때문에, 스몰토크에서 다른 모든 객체를 다루듯이 조작할 수 있습니다: 메시지를 보내는 것으로 morph 의 속성을 바꿀 수 있고 morph 의 서브클래스를 만드는 작업등을 할 수 있습니다. 모든 morph 는 현재 화면에 열려있지 않은 상태여도, 위치와 크기를 가지고 있습니다. 모든 morph 는 편의상, 화면에서 사각형의 영역을 가지고있는것으로 가정되고, 규칙적인 모양이 아니라고 해도, 위치와 크기의 값은 대상이되는 morph 를 둘러싸는 최소크기의 직사격형 상자가 되며, 이 상자를 morph 의 bounding box 또는 "bounds" 라고 합니다. Postion 메서드는 morph 의 상단 좌측 모서리의 위치를 기술하는 점(point)의 값을 반환합니다. morph 에 대한 좌표체계의 기준점은 화면 좌상단 구석에 있으며, 화면에서 하단으로 증가하는 경우는 y 좌표, 화면에서 우측으로 증가하는 경우는 x 좌표가 됩니다. extent 메서드도 postion 메서드처럼 point 를 반환합니다만, 위치값을 반환하는것이 아니라 morph 의 폭과 높이에 대한 값을 반환합니다.


Squeak comment.png다음 코드를 워크스페이스에 입력한 후 do it 을 실행하십시오.

joe := Morph new color: Color blue.
joe openInWorld.
bill := Morph new color: Color red .
bill openInWorld.


joe position 을 입력한 후 print it 을 실행합니다. joe 를 움직이기 위해서, joe position: (joe position + (10@3)) 을 반복적으로 실행합니다.

크기에 대해서도 같은 작업을 할 수 있습니다. joe extent 는 joe 의 크키를 반환하며, joe 의 크기를 크게 하려면, joe extent: (joe extent * 1.1) 를 실행합니다. Morph 의 색상을 변경하려면, 대상이 되는 morph 에 인자로 전달을 원하는 Color 객체와 함께 color: 메시지를 전송합니다. 예를 들면 joe color: Color orange 같은 내용이 되겠군요. 투명도를 추가하려면 joe color: (Color orange alpha: 0.5) 를 시도해보세요.


Squeak comment.pngbill이 joe를 따르게 만들려면, 이 코드를 반복적으로 실행하십시오.

bill position: (joe position + (100@0))


만약 마우스를 써서 joe 를 이동시키고 이 코드를 실행한다면, bill 은 joe 의 우측 100 pixel 로 이동할겁니다.


Notes