플렉스에서 다음과 같은 시나리오가있는 사람이 있는지 궁금합니다.플렉스 스위치 항목 렌더러
내부의 다른 렌더러에 위임 한 사용자 정의 항목 렌더러를 보유하고 싶습니다.
데이터 그리드에서 행의 데이터 제공자에 부울 값이있는 경우 확인란을 표시하는 등의 이유가있을 수 있습니다. 값이 boolean이 아닌 경우 기본 항목 렌더러를 사용합니다.
기본적으로 프록시 객체 (프록시 클래스는 아니지만)를 사용하여 모든 렌더러를 하위 렌더러에 위임 할 수있는 렌더러를 사용할 수 있기를 바랬습니다.
설명하기가 어렵습니다.
편집 한
나는 다음은 내가 생각했던 것의 명확한 아이디어를 제공합니다 생각합니다. 이것은 단지 아이디어를 보여주기위한 목적으로 신속하게 깨어납니다.
SwitchingRenderer.as
package com.example
{
import mx.controls.CheckBox;
import mx.controls.dataGridClasses.DataGridItemRenderer;
import mx.controls.listClasses.BaseListData;
import mx.controls.listClasses.IDropInListItemRenderer;
import mx.core.IDataRenderer;
import mx.core.UIComponent;
public class SwitchingRenderer extends UIComponent implements IDataRenderer, IDropInListItemRenderer
{
private var checkboxRenderer:CheckBox;
private var defaultRenderer:DataGridItemRenderer;
private var currentRenderer:IDataRenderer;
public function SwitchingRenderer()
{
this.checkboxRenderer = new CheckBox();
this.defaultRenderer = new DataGridItemRenderer();
this.currentRenderer = defaultRenderer();
super();
}
public function get data():Object
{
//If the data for this cell is a boolean
// currentRender = checkBoxRenderer
// otherwise
// currentRenderer = defaultRenderer
}
public function set data(value:Object):void
{
currentRenderer.data = value;
}
public function get listData():BaseListData
{
return currentRenderer.listData;
}
public function set listData(value:BaseListData):void
{
currentRenderer.listData = value;
}
}
}
내가 희망 . – Wes
이에 따라 제 답변을 편집했지만 원래 게시물에는 아무런 문제가 없음을 지적 할 것입니다. 이 문제를 구현하는 데 문제가 있습니까? 귀하의 질문에 알고리즘 논리가 이미 정의되어 있습니다. – JeffryHouser
예 이전에 이것을 고려했습니다. 내 질문이 다르다는 것을 이해합니다. 그것의 유용한 대답은 그렇습니다. 나는 그 방법이 효과가 있는지보기 위해 노력하고 있습니다. – Wes