2012-11-06 3 views
1

ItemRenderer는 ClassFactory이며 ClassFactory의 newInstance 메서드를 사용하여 ItemRenderer의 인스턴스를 가져올 수 있습니다. 그러나 제 질문은 ClassFactory.newInstance()를 사용하지 않고 ItemRenderer의 메서드를 사용할 수 있습니까?플렉스 ItemRenderers

내 경우에는 상태를 유지하지 않으므로이 newInstance 메서드를 사용할 수 없습니다.

내가 할 수있는 방법이 있습니까? 감사!

답변

3

ItemRenderer는 다른 구성 요소와 마찬가지로 구성 요소입니다. 목록 기반 클래스의 itemRenderer 속성 값은 ClassFactory입니다. itemRenderer 구성 요소의 인스턴스에 대한 참조가 있으면 해당 인스턴스에서 메서드를 호출 할 수 있습니다.

해당 구성 요소 인스턴스가 아직 작성되지 않은 경우 인스턴스가 있으면 해당 구성 요소에서 메소드를 호출 할 수 없습니다. 따라서 ClassFactory.newInstance()를 사용하지 않고 itemRenderer에서 메서드를 호출하려면 new 키워드를 사용하여 수동으로 인스턴스를 수동으로 만들어야합니다.

1

정적 함수 및 변수를 의미합니까? 당신이 함수 (또는 변수 또는 const를) 정적을 정의 할 경우

class MyClass { 
    public static const className:String="MyClass.className (const)"; 
    public static function getClassName():String { 
     return "MyClass.getClassName (function)"; 
    } 
} 

trace(MyClass.className); //prints "MyClass.className (const)" 
trace(MyClass.getClassName()); //prints MyClass.getClassName (function) 
+0

이것은 답변이거나 다른 사람의 답변에 대한 의견입니까? – JeffryHouser

+0

@ www.Flextras.com '물론 대답입니다. 왜 다른 사람의 대답에 대한 논평이 될까요? –

+0

질문을하고 정적 변수/함수에 대해 이야기합니다. itemRenderer에서 메소드를 실행하는 것과 관련이 없습니다. 아마 당신이 다른 대답에 세부 사항을 추가하려한다고 생각했을 것입니다. – JeffryHouser

2

를 정의 할 수 있습니다 그대로 당신은 같은 똑똑한의 itemRenderer를 구현 할 수 있도록

, 그것은, 클래스 이름을 통해 액세스 설정중인 데이터에 따라 상태를 다시 작성해야했습니다. 반면에 데이터에 필요한 모든 것이 포함되어 있는지 확인하십시오. 렌더러 자체와 다른 범위에서 렌더러와 상호 작용하기를 간절히 원할 것입니다.

렌더러가 추가 될 때 필요한 경우 DataGroup이 RendererExistence 이벤트를 전달합니다.

private function newList():List { 
    const list:List = new List(); 
    list.addEventListener(FlexEvent.INITIALIZE, list_initializeHandler); 
    return list; 
} 

private function list_initializeHandler(event:FlexEvent):void { 
    const listBase:ListBase = ListBase(event.target), 
     dataGroup:DataGroup = listBase.dataGroup; 

    dataGroup.addEventListener(RendererExistenceEvent.RENDERER_ADD, dataGroup_rendererAddHandler); 
    dataGroup.addEventListener(RendererExistenceEvent.RENDERER_REMOVE, dataGroup_rendererRemoveHandler); 
} 

private function dataGroup_rendererAddHandler(event:RendererExistenceEvent):void { 
    // renderer added 
} 

private function dataGroup_rendererRemoveHandler(event:RendererExistenceEvent):void { 
    // renderer removed 
} 

단일 항목 렌더러 인스턴스를 참조해야하는 경우 이동하는 방법입니다.