Legend 컨트롤 조작하기


- 레전드는 Tile 클레스의 서브 클래스 임.(즉, Tile 메소드 사용가능)

If you do not explicitly set the legendMarkerRenderer property,
the property uses the default class that the series'
itemRenderer style property specifies. Each series has a default renderer that is
used if neither of these style properties is specified.

===> 차트에서 설정한 legendMarkerRenderer 의 값을 (미설정시 default값)
커스텀 마커를 생성하면 ISimpleStyleClient로 구현한 styleName 값으로 들어옴.

You can create your own custom legend marker class.
Classes used as legend markers must implement the IFlexDisplayObject interface and,
optionally, the ISimpleStyleClient and IDataRenderer interfaces.





LegendItem을 Customize하는 방법은 의외로 간단하다.

1. custLegendMarker 로 UIComponent를 상속받은 녀석을 하나 만들고, IDataRenderer를 implement 해서 data를 set,get 할 수 있게 해준다. ( 이 부분은 단순히 디자인만 customize할 경우엔 굳이 하지 않아도 된다. 그럴 경우 그냥 UIComponent를 쓰면 됨 --> 디자인만 Customize할 경우 굳이 지금 설명하는 방법을 쓰지 않아도;;; )

2. custLegendItem 을 mx.charts.LegendItem을 상속받아 만든다.
여기서 
override public function set marker(value:IFlexDisplayObject):void
로 set marker를 상속받아 만들어 준다.

3. 이 때 넘 어오는 value가 바로 기본 marker인데, 이건 series에 itemrenderer를 썼다면 그 renderer가, 기본형을 썼다면 기본 renderer가 넘어온다.

4. 1에서 선언한 UIComponent에 해당 marker를 삽입하고, 좌표, 크기등을 지정해준다. 그리고 더 추가하고 싶은 녀석들을 여기에 넣고 이리저리 좌표나 크기 조정을 해주자.

5. 꼭 해줘야 할 것은 각 컴포넌트들의 사이즈를 잡아줘야 한다는 것이다.

6. 그리고 나서 super.marker=새로만든UIComponent (여기서는 1에서 만든 custLegendMarker가 되겠지.

7. 이 customLegendItem을 사용하는 방법은 <mx:Legend legendItemClass="comp.custLegendItem" /> 요런식으로 써 주면 된다.

아래는 이 내용을 가지고 만들어본 custom LegendItem을 사용한 경우이다.
체크에 따른 오른쪽 챠트의 visible 변화를 보라.





참 고 : column(Bar) series의 경우 이 sample을 사용했을 경우 영역은 남아있고 visible만 변한다. 이 경우엔 Chart 자체를 상속받아 series부분을 만져줘야 한다. 이런 부분은 스스로 해결해 보길- ^^


+ Recent posts