2009-11-07 6 views
0

아래의 함수를 사용하여 ViewStack 내부에 새 패널을 만듭니다.이 함수는 훌륭하게 작동하지만 패널에 내용을 넣으려고하지만 실패합니다.새로운 패널 안의 Flex Call ItemRenderer()

 private function viewstack_addChild(name:String):void { 
      //if (accordion.numChildren < MAX_CHILDREN) { 
       var p:Panel = new Panel(); 
       p.id = name; 
       p.name = name; 
       p.title = name; 
       p.percentWidth = 100; 
       p.percentHeight = 100; 
       var display:PageItemRenderer = new PageItemRenderer; 
       p.finishPrint(display); 
       var randColor:uint = Math.random() * 0xFFFFFF; 
       p.setStyle("backgroundColor", randColor); 
       myViewStack.addChild(p); 
       //myViewStack.selectedChild = p; 
      //} 
     } 

나는 어떤 도움을 크게 감상 할 수

XML 데이터를 수용하고이를 표시하지만 각 패널의 렌더러를 호출하는 방법을 알아낼 수 없습니다 것 itemRenderer를가 PageItemRenderer라는 사용자 지정을 .. 있습니다. 편집

: 추가 PageItemRenderer.mxml

<?xml version="1.0" encoding="utf-8"?> 
<mx:HBox 
height="100%" 
width="100%" 
xmlns:mx="http://www.adobe.com/2006/mxml"> 

<mx:HBox width="100%" height="100%"> 
    <mx:VBox height="100%" width="20%" horizontalAlign="center" verticalAlign="middle"> 
     <!-- software image --> 
     <mx:Image source="{data.image}" width="90%" height="90%"/> 
    </mx:VBox> 

    <!-- person's name --> 
    <mx:VBox height="100%" width="80%" horizontalAlign="left" verticalAlign="middle"> 
     <mx:Label width="100%" height="100%" text="{data.name} {data.version}" color="#FFAE00"/> 
     <mx:Label width="100%" height="100%" text="{data.description}" color="#FFFFFF"/> 
    </mx:VBox> 
</mx:HBox> 

</mx:HBox> 

답변

1

Panel는 컨테이너 클래스, 그리고 당신의 PageItemRenderer 그래서 당신의 viewstack_addChild 방법에서이 작업을 수행, 일부 UIComponent를 확장해야합니다 :

var p:Panel = new Panel(); 
// set the properties on p 
var pR:PageItemRenderer = new PageItemRenderer(); 
var data:Object; 
// Do something to get the data to be displayed; 
pR.data = data; 
p.addChild(pR); 
myViewStack.addChild(p); 

편집을 : 변경됨 pR.setData to pR.data EDIT : 변경됨 pR.data(data) to pR.data = data;

+0

안녕하세요 LynchRJ, 응답을 주셔서 감사합니다. 그러나 실제로 데이터 변수에 대해 itemrenderer를 호출하는 방법에 대해 여전히 확신이 없습니다 .. – medoix

+0

나는 코드를 수정하여 진행했습니다. 아이템 렌더러의 드롭은, mx.core.IDataRenderer mx.controls.listClasses.IDropInListItemRenderer를 구현하는 UIComponent 클래스입니다. List 또는 다른 컨트롤 대신 Panel에서 사용하기를 원한다는 것을 이해합니다. List 컨트롤은 렌더러의 인스턴스를 만들고 요소에 데이터를 설정합니다. 해당 컨텍스트 외부에서 사용하려면 인스턴스를 만들고 데이터를 설정 한 다음 컨테이너 요소의 자식으로 추가하십시오. –

+0

죄송합니다. mx를 구현한다는 의미입니다. core.IDataRenderer 및 mx.controls.listClasses.IDropInListItemRenderer 인터페이스 –

관련 문제