关于itemRender

知识点:
1、凡是基于列表的控件都有一个itemRenderer属性,它用来设置项目渲染器的属性,我们可以选择默认的渲染器也可以选择自定义。如果选择自定义,则在基于列表的控件中将自定义渲染器的类赋给itemRenderer属性,如<mx:Tree id="myTree" width="100%" height="100%" labelField="@label"
showRoot="false" dataProvider="{treeData}"
itemRenderer="renderers.ColoredFolderTreeItemRenderer"
folderOpenIcon="@Embed('/assets/open.png')"
folderClosedIcon="@Embed('/assets/closed.png')" />

自定义渲染器示例:

主程序:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="srcview/index.html">

<mx:XMLList id="treeData">
<node>
<node label="Level 1 - 1">
<node label="Level 2">
<node label="Level 3">
<node label="Level 4">
<node label="Level 5"/>
</node>
</node>
</node>
</node>
<node label="Level 1 - 2">
<node label="Level 2">
<node label="Level 3">
<node label="Level 4">
<node label="Level 5"/>
</node>
</node>
</node>
</node>
<node label="Level 1 - 3">
<node label="Level 2">
<node label="Level 3">
<node label="Level 4">
<node label="Level 5"/>
</node>
</node>
</node>
</node>
</node>
</mx:XMLList>

<mx:Tree id="myTree" width="100%" height="100%" labelField="@label"
showRoot="false" dataProvider="{treeData}"
itemRenderer="renderers.ColoredFolderTreeItemRenderer"
folderOpenIcon="@Embed('/assets/open.png')"
folderClosedIcon="@Embed('/assets/closed.png')" />

</mx:Application>


ColoredFolderTreeItemRenderer类:
package renderers
{
import flash.filters.ColorMatrixFilter;

import mx.controls.treeClasses.TreeItemRenderer;
import mx.controls.treeClasses.TreeListData;

public class ColoredFolderTreeItemRenderer extends TreeItemRenderer
{
override protected function commitProperties():void
{
super.commitProperties();

if ( icon )
{
var matrix:Array = new Array();

switch (TreeListData( listData ).depth )
{
case 1:
matrix = matrix.concat([1, 0, 0, 0, 0]); // red
matrix = matrix.concat([0, .25, 0, 0, 0]); // green
matrix = matrix.concat([0, 0, .25, 0, 0]); // blue
matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha
icon.filters = [ new ColorMatrixFilter( matrix) ]
break;
case 2:
matrix = matrix.concat([.25, 0, 0, 0, 0]); // red
matrix = matrix.concat([0, 1, 0, 0, 0]); // green
matrix = matrix.concat([0, 0, .25, 0, 0]); // blue
matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha
icon.filters = [ new ColorMatrixFilter( matrix) ]
break;
case 3:
matrix = matrix.concat([.25, 0, 0, 0, 0]); // red
matrix = matrix.concat([0, .25, 0, 0, 0]); // green
matrix = matrix.concat([0, 0, 1, 0, 0]); // blue
matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha
icon.filters = [ new ColorMatrixFilter( matrix) ]
break;
default:
icon.filters = [];
break;
}
}
}
}
}

演示效果如图所示:

知识点2:要通过使用 ActionScript 添加滤镜,请执行以下步骤(假定目标显示对象名为 myDisplayObject):

1)、使用所选滤镜类的构造函数方法创建一个新的滤镜对象。
2)、将 myDisplayObject.filters 数组的值分配给临时数组,例如一个名为 myFilters 的数组。
3)、将新的滤镜对象添加到临时数组 myFilters。
4)、将临时数组的值分配给 myDisplayObject.filters 数组。


commitProperties()是用来设置组样宽高样式等行为的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值