Flex的呼叫ItemRenderer的一个新的面板内()
-
18-09-2019 - |
题
我有以下功能我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;
//}
}
我有一个自定义的itemRenderer称为PageItemRenderer将接受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>
解决方案
在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
;
不隶属于 StackOverflow