在新面板中调用Flex调用ItemRenderer()

时间:2009-11-07 01:03:46

标签: flex panel renderer viewstack

我有以下功能在我的ViewStack中创建新面板..这很好用,它们很棒..但是我想把一些内容放到面板中,但我失败了。

       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;
            //}
        }

我有一个名为PageItemRenderer的自定义itemrenderer,它将接受xml数据并显示它,但我无法弄清楚如何为每个面板调用渲染器..

非常感谢任何帮助。

编辑:添加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 个答案:

答案 0 :(得分:1)

Panel只是一个容器类,而您的PageItemRenderer必须扩展一些UIComponent,所以只需在viewstack_addChild方法中执行此操作:

 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更改为pR.data 编辑:将pR.data(data)更改为pR.data = data;