XPLATFORM 101
User Object 에 대해 좀 더 자세하게 살펴보도록 하겠습니다.
처음 User Object 를 만들고 아무런 코드를 넣지 않으면
상속받은 컴포넌트와 동일하게 동작합니다.
하지만 그렇다면 별도의 컴포넌트를 만드는 의미가 없죠.

User Object 를 만든다는 것은 상속받은 컴포넌트와 비슷하지만
다른 속성과 동작을 가지는 무언가를 필요로 하기 때문에 만드는 것입니다.

단지 보여지는 영역만 다르게 표현해야 한다면
스타일을 적용하는 것이 적절한 선택입니다.
하지만 스타일로 표현하기 힘든 부분이거나 다른 속성이 필요하다면 User Object로 만들어놓고 관리하는 것이 편할 겁니다.

User Object 를 만들때에는 다음과 같은 기능을 사용할 수 있습니다.

(1) 메소드 오버라이드
- 버튼을 예로 들면 버튼에서 사용하는 메소드의 기능을 확장할 수 있습니다.
예를 들어 버튼 click 메소드를 호출했을때 특정 이벤트를 처리하고 싶다면 다음과 같이 처리할 수 있습니다.
function click()
{
super.click();
trace("TEST CLICK");
}
이렇게 하면 버튼에서 제공하는 기본 click 메소드를 실행하고 나서
다음 코드를 처리해줍니다.

(2) 메소드 추가
- 기존 컴포넌트에 없는 메소드나 속성을 추가할 수 있습니다.
이렇게 추가된 메소드나 속성은 코드 힌트에서도 보여집니다.


(3) 속성 추가
- 속성을 추가하는 경우에는 변수 자체를 public 으로 추가해도 되지만
set, get 함수로 정의할 수 있습니다.
양식은 아래와 같은 양식이 되겠죠.
class usrButton extends Button
{
private  var  userprop_value;
function  get  userprop()
{
      return  userprop_value;
}
function  set  userprop ( newval ) 
{
      userprop_value = newval;
}
}
(4) 사용자 이벤트 추가
UserEvent 라는 오브젝트가 있어 사용자 정의 이벤트를 만들고 이를 사용할 수 있습니다.
그리고 이벤트를 만들고 처리하게 될때 같이 날려주는 정보가 있습니다.
이런 정보들은 ~~EventInfo 와 같은 식으로 정의가 되어있는데
모든 정보는 EventInfo 오브젝트를 상속받습니다.

기본적인 EventInfo 오브젝트는 이벤트 ID와 이벤트가 발생한 오브젝트를 표시하는 속성을 제공합니다.
컴포넌트에서 제공할 수 있는 추가적인 정보를 포함시킬 수도 있습니다.

* 테스트를 해보고 샘플이라도 보여드려야 하는데.. 아직 공부가 부족한가 봅니다. 일단 여기까지..

http://cafe.naver.com/xplatform101/277 
XPLATFORM 101
기본적인 애플리케이션은 엑스플랫폼에서 제공하는 컴포넌트만으로 충분히 적용이 가능합니다.
하지만 요구사항이 복잡해지고 다른 형식의 컴포넌트가 필요하다면 직접 만들어야 할 필요가 생깁니다.
그럴때 사용하는 것이 Customized Object 입니다.
Customized Object 를 만들어놓으면 엑스플랫폼에서 제공하는 다른 컴포넌트(바이너리 오브젝트)처럼 사용할 수 있습니다.

엑스플랫폼에서는 3가지 형식을 사용할 수 있습니다.
- User Object
- 복합 컴포넌트 (Composite Component)
- 폼 상속 (Form Inheritance)

먼저 User Object 를 알아보겠습니다.
일단 바이너리 오브젝트를 상속받습니다. 그냥 혼자서 뭔가 해보겠다고 해서 할 수 있는건 아니네요.

User Object 는 File > New > Item > User Object 메뉴에서 만들 수 있습니다.
그림을 보면서 하나씩 살펴보겠습니다.


먼저 기본이 되는 오브젝트 클래스를 선택하도록 되어 있습니다.
콤보박스를 확인해보면 선택 가능한 목록이 보입니다.

그리고 사용할 클래스명을 정하고 서비스 그룹을 선택한 후에
생성된 오브젝트를 TypeDefinition에 추가할지를 결정합니다.
TypeDefinition ID는 일반적으로 클래스명을 그대로 따라가고 원할 경우 변경할 수 있습니다.

그렇게 하고 나면 다음과 같은 코드가 생성됩니다.
파일명은 MyBtn.xjs 가 되고 아래와 같이 코드가 만들어집니다.
class MyBtn extends Button
{

}
빈 공간은 알아서 채우시면 된다는..^^
써놓고 보니 무척 무책임하네요.
다음번에는 예제라도 하나 가져다가 분석해보겠습니다.

http://cafe.naver.com/xplatform101/276 
XPLATFORM 101
화면에 보여지는 모든 컴포넌트는 canvas 라는 속성을 가집니다.
도움말을 참조하면 컴포넌트의 Draw Target이 되는 속성이라고 합니다.

canvas 오브젝트는 3가지 메소드를 제공합니다.
getCanvasRect, getClientRect, getPainter

앞의 2개는 영역을 가져오는 메소드입니다.
Rect 오브젝트를 반환하기 때문에 
영역의 좌표값을 가져올 수 있습니다.

getCanvasRect 와 getClientRect 의 차이점은 컴포넌트의 border에 있습니다.
컴포넌트의 클라이언트 rect 라는 개념은 컴포넌트에서 border 만큼을 뺀 영역이라는 의미입니다.


그리고 영역을 가져올때 상수값으로 constOption 을 지정할 수 있습니다.
지금은 Canvas.COORD_SCREEN 값만 제공합니다.
해당 값을 지정하지 않으면 윈도우 기준으로 좌표값을 처리하고
상수값을 지정한다면 실제 스크린 해상도를 기준으로 처리합니다.
듀얼 모니터를 사용한다면 2개 모니터의 해상도를 합친 기준으로 동작하게 됩니다.

getPainter 는 현재 Canvas가 존재하는 부모 윈도우가 가지는 페인터를 반환한다고 합니다.
말은 복잡한데 결국에는 컴포넌트의 Painter 오브젝트를 반환하는 것입니다.
페인터는 화면에 무언가를 표시하기 위한 도구로 사용됩니다.
선을 그릴 수도 있고 도형을 만들 수도 있습니다.
이런 과정에서 중심이 되는 지점이 Canvas의 좌측 상단이 됩니다.

Canvas 는 실제 화면에 표현할 수 있는 영역을 확인하고
적절하게 그려질 컴포넌트의 크기를 지정할 수 있습니다.

* HTML5 캔버스와는 다른...^^

http://cafe.naver.com/xplatform101/275