flex 4.5 Mobile中的自定义着色错误
当值<0时,我尝试将数据涂成红色,否则为绿色。我正在使用显示列,并且我的itemRenderer操作脚本文件给了我错误“无法访问flex 4.5 Mobile中的自定义着色错误,mobile,itemrenderer,flex4.5,Mobile,Itemrenderer,Flex4.5,当值 声明如下: <s:GridColumn id="name1" dataField="name" headerText="Name" /> <s:GridColumn dataField="excess_return" headerText="Excess Return" itemRenderer="util.ConditionalColoredLabelAS"/> <fx:Declaratio
null
对象的属性”。在我的as文件中,当我调试时,我可以看到“data”变量的值为null
,一旦它调用超级构造函数,它就会给出此错误
<s:GridColumn id="name1" dataField="name" headerText="Name" />
<s:GridColumn dataField="excess_return" headerText="Excess Return" itemRenderer="util.ConditionalColoredLabelAS"/>
我的动作脚本文件
public class ConditionalColoredLabelAS extends LabelItemRenderer
{
public function ConditionalColoredLabelAS() {
if (data !=null)
super();
}
// Use the value of the myColor property to draw
// the background color of the item in the list.
override protected function drawBackground(unscaledWidth:Number, unscaledHeight:Number):void {
// Define a var to hold the color.
var myColor:uint;
if (data !=null)
{
// Determine the RGB color value from the label property.
if (data == "red")
myColor = 0xFF0000;
if (data == "green")
myColor = 0x00FF00;
if (data == "blue")
myColor = 0x0000FF;
}
//graphics.beginFill(myColor, 1);
//graphics.drawRect(0, 0, unscaledWidth, unscaledHeight);
}
}
<s:GridColumn id="name1" dataField="name" headerText="Name" />
<s:GridColumn dataField="excess_return" headerText="Excess Return" itemRenderer="util.ConditionalColoredLabelAS"/>
我从mxml文件中的调用是:
<s:GridColumn id="name1" dataField="name" headerText="Name" />
<s:GridColumn dataField="excess_return" headerText="Excess Return" itemRenderer="util.ConditionalColoredLabelAS"/>
<s:GridColumn id="name1" dataField="name" headerText="Name" />
<s:GridColumn dataField="excess_return" headerText="Excess Return" itemRenderer="util.ConditionalColoredLabelAS"/>
终于找到了答案
<s:GridColumn id="name1" dataField="name" headerText="Name" />
<s:GridColumn dataField="excess_return" headerText="Excess Return" itemRenderer="util.ConditionalColoredLabelAS"/>
功能是
<s:GridColumn id="name1" dataField="name" headerText="Name" />
<s:GridColumn dataField="excess_return" headerText="Excess Return" itemRenderer="util.ConditionalColoredLabelAS"/>
private function returnItemRenderer( item: Object, column: GridColumn ): IFactory
{
if (item == null)
return default_grid_item_renderer;
//var field:String = column.dataField;
if(item._return < 0)
return red_grid_item_renderer;
else if (item._return>0)
return green_grid_item_renderer;
return default_grid_item_renderer;
//return new ClassFactory( DefaultGridItemRenderer );
}
]]>
</fx:Script>
private函数returnItemRenderer(项:对象,列:GridColumn):IFactory
{
如果(项==null)
返回默认的网格项目渲染器;
//变量字段:String=column.dataField;
如果(项目返回<0)
返回红色网格项目渲染器;
否则如果(项目返回>0)
返回绿色网格项目渲染器;
返回默认的网格项目渲染器;
//返回新的类工厂(DefaultGridItemRenderer);
}
]]>
声明如下:
<s:GridColumn id="name1" dataField="name" headerText="Name" />
<s:GridColumn dataField="excess_return" headerText="Excess Return" itemRenderer="util.ConditionalColoredLabelAS"/>
<fx:Declarations>
<fx:Component id="default_grid_item_renderer" >
<s:DefaultGridItemRenderer />
</fx:Component>
<fx:Component id="red_grid_item_renderer" >
<s:DefaultGridItemRenderer color="0xFF0000"/>
</fx:Component>
<fx:Component id="green_grid_item_renderer" >
<s:DefaultGridItemRenderer color="0x00FF00"/>
</fx:Component>
</fx:Declarations>
<s:DataGrid id="top5Grid" width="100%" height="100%"
dataProvider="{getDataResultMax.lastResult}">
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="impact" headerText="Impact" itemRendererFunction="impactItemRenderer"/>
<s:GridColumn dataField="_return" headerText="Return" itemRendererFunction="returnItemRenderer"/>
</s:ArrayList>
</s:columns>
</s:DataGrid>
它不允许我放置声明,所以它们就在这里