自定义List被选中项的外观

自定义List被选中项的外观

5.13.1.问题
为List 组件中的选中项贴上一个图片
5.13.2.解决方法
覆盖ListBase 类的drawSelectionIndicator 方法并修改由该方法使用的指示器Sprite 对象。
5.13.3.讨论
List 控件通过drawSelectionIndicator 方法为在列表中选中的itemRenderer 创建外观。
该方法的信息如下:

+展开
-ActionScript
override  protected  function drawSelectionIndicator(indicator:Sprite, x:Number, y:Number,width:Number, height:Number, color:uint, itemRenderer:IListItemRenderer): void


所有的偏移量,大小,色彩信息都可以由x, y, width, height, 和color 属性来设置。第一个参数indicator,是一个画在选中项上的flash.display.Sprite 实例,最后一个参数itemRenderer 是将被选择的条目渲染器。

实现方法的例子添加了一个图片到指示器Sprite 对象,由于当itemRenderer 被撤消选中时sprite 对象被移除和销毁,所以不必担心后面的回收。

除了应用于所有高光的itemRenderer , drawHighlightIndicatory 方法和drawSelectionIndicator 方法功能一样, itemRenderer 被用户鼠标滑过,但不选择,请看:

+展开
-ActionScript
override  protected  function drawHighlightIndicator(indicator:Sprite, x:Number, y:Number,width:Number, height:Number, color:uint, itemRenderer:IListItemRenderer): void


用一张单独的图片来表现高光,放到itemRenderer 的边缘,并在用户鼠标滑过列表的itemRenderer 时显示。
下面是该技术的完整清单:

+展开
-XML
<?xml version="1.0" encoding="utf-8"?>
<mx:List xmlns:mx="http://www.adobe.com/2006/mxml" width="71" height="48"
 backgroundImage="liebiao.png">
 <mx:Script>
 <![CDATA[
  import mx.controls.listClasses.IListItemRenderer;
  [Embed("xuanzhong.png")]
  private var img:Class;
  [Embed("xuanzhong.png")]
  private var highlight_img:Class;
   override protected function drawHighlightIndicator(indicator:Sprite, x:Number,y:Number, width:Number, height:Number, color:uint,itemRenderer:IListItemRenderer):void {
   var this_img:Object = new highlight_img();
   indicator.addChild((this_img as DisplayObject));
   (this_img as DisplayObject).x =0;//itemRenderer.width -(this_img as DisplayObject).width;  0xA4A3A1
   super.drawHighlightIndicator(indicator, x, y+2, width, height, 0xA4A3A1,itemRenderer);
   indicator.x=3;
   indicator.width=64;
   indicator.height=20;
   indicator.alpha=1;
   indicator.graphics.clear();
  }
  override protected function drawCaretIndicator(indicator:Sprite, x:Number, y:Number, width:Number, height:Number, color:uint, itemRenderer:IListItemRenderer):void
     {
      super.drawCaretIndicator(indicator, 0, y, 65, 20, 0xffffff,itemRenderer);
      indicator.x=3;
   indicator.width=64;
   indicator.height=20;
   indicator.alpha=1;
   indicator.graphics.clear();
     }
  override protected function drawSelectionIndicator(indicator:Sprite, x:Number,y:Number, width:Number, height:Number, color:uint,itemRenderer:IListItemRenderer):void{
   var this_img:Object = new img();
   indicator.addChild((this_img as DisplayObject));
   (this_img as DisplayObject).x = 0;//itemRenderer.width - (this_img as DisplayObject).width
   super.drawSelectionIndicator(indicator, x, y+2, width,height, 0xA42011,itemRenderer);
   indicator.x=3;
   indicator.width=64;
   indicator.height=20;
   indicator.alpha=1;
   indicator.graphics.clear();
  }
 
 ]]>
 </mx:Script>
</mx:List>

你可能感兴趣的:(list,function,object,Class,import,encoding)