IconUtility 应用二例(动态载入icon)
Sunday, March 23rd, 2008<item icon=”assets/myIcon.png”/>
DynamicIconListItemRenderer:
import com.edison.util.IconUtility;
import flash.display.DisplayObject;
import mx.controls.List;
import mx.controls.listClasses.ListData;
import mx.controls.listClasses.ListItemRenderer;
public class DynamicIconListItemRenderer extends ListItemRenderer
{
public function DynamicIconListItemRenderer()
{
super();
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth,unscaledHeight);
// make a distance between the icon and the label
var distance:Number = 5;
label.x = label.x + distance;
}
//重写此方法
override protected function commitProperties():void
{
if(!ListData(listData).icon)
{
ListData(listData).icon = IconUtility.getClass(this,data[List(listData.owner).iconField]);
}
super.commitProperties();
if(this.label.x == this.icon.x)
{
this.label.move(this.icon.width,this.label.y);
}
}
}
DynamicIconMenuBarItem:
import com.edison.util.IconUtility;
import flash.display.DisplayObject;
import mx.controls.menuClasses.MenuBarItem;
public class DynamicIconMenuBarItem extends MenuBarItem
{
public function DynamicIconMenuBarItem()
{
super();
}
//重写此方法
override protected function commitProperties():void
{
super.commitProperties();
if(icon == null && data != null)
{
var iconClass:Class = IconUtility.getClass(this,data[menuBar.iconField]);
icon = new iconClass();
addChild(DisplayObject(icon));
}
invalidateDisplayList();
}
}

