项目中很多用到list的地方
所以扩展list类
1,设定 ,清空默认皮肤
public function set setMyStyle(type:int):void {
switch(type)
{
case 1:
setStyle("skin" , Reflection.getClass("customCellListSkin1"));//清空默认皮肤,第二个参数为空白的Movieclip
setStyle("cellRenderer" , GuildSkillItem);//传入自定义的cellRenderer
default:
{
break;
}
}
}
2,设置皮肤
public function set skin(type:uint):void {
if (type > 0) {
setSkin("upArrowUpSkin" , ("ArrowUp_upSkin" + type));
setSkin("upArrowOverSkin" , ("ArrowUp_overSkin" + type));
setSkin("upArrowDownSkin" , ("ArrowUp_downSkin" + type));
setSkin("upArrowDisabledSkin" , ("ArrowUp_disabledSkin" + type));
setSkin("trackUpSkin" , ("Track_skin" + type));
setSkin("trackOverSkin" , ("Track_skin" + type));
setSkin("trackDownSkin" , ("Track_skin" + type));
setSkin("trackDisabledSkin" , ("Track_skin" + type));
setSkin("thumbUpSkin" , ("Thumb_upSkin" + type));
setSkin("thumbOverSkin" , ("Thumb_overSkin" + type));
setSkin("thumbIcon" , ("Bar_thumbIcon" + type));
setSkin("thumbDownSkin" , ("Thumb_downSkin" + type));
setSkin("downArrowUpSkin" , ("ArrowDown_upSkin" + type));
setSkin("downArrowOverSkin" , ("ArrowDown_overSkin" + type));
setSkin("downArrowDownSkin" , ("ArrowDown_downSkin" + type));
setSkin("downArrowDisabledSkin" , ("ArrowDown_disabledSkin" + type));
setSkin("trackUpSkin" , ("ScrollPaneBgSkin" + type));
setSkin("trackOverSkin" , ("ScrollPaneBgSkin" + type));
setSkin("trackDownSkin" , ("ScrollPaneBgSkin" + type));
setSkin("trackDisabledSkin" , ("ScrollPaneBgSkin" + type));
}
}
private function setSkin(styleName:String , className:String):void {
try {
setStyle(styleName , Reflection.getClass(className));
} catch (e:Error) {
debug("加载皮肤失败:" , e.getStackTrace());
}
}
3,扩展cellRenderer类 ,可使用继承也可以使用实现接口
注意:实现接口的时候,要继承组件类UIComponent 并重写DrawNow()方法
在此方法中,调用cellRenderer里用到的按钮等组件自身的DrawNow()方法,这样
才能保证正确重绘。
4,CustomList构造函数中依次调用
public function CustomList(value:int = 1) {
super();
text = new TextFormat();
setMyStyle = value;
skin = 3;
}