Flex 4 Chart Legend

设置Legend的字体大小

直接设置 Legend的fontSize是没有用的。

可以通过扩展LegendItem类,并设置Legend的ItemClass属性来实现。
package{
import mx.charts.LegendItem;
public class BigFontLegendItem extends LegendItem{
public function BigLegendItem(){
super();
this.styleName="ChineseFont";
}
}
}
//application中:
<mx:Style>
.ChineseFont{
fontFamily:"Verdana","宋体";
fontSize:12;
}
</mx:Style>
<mx:Legend legendItemClass="LinkLegendItem"/>

也可以通过派生这个类, 就可以修改其相应的样式.

派生LegendItem 类, 并设置样式.
BigFontLegendIte.as

view plaincopy to clipboardprint?
package com
{
import mx.charts.LegendItem;
public class BigFontLegendItem extends LegendItem
{
public function BigFontLegendItem()
{
super();
this.styleName = "<STRONG>ChineseFont</STRONG>";
}

}
}
package com
{
import mx.charts.LegendItem;
public class BigFontLegendItem extends LegendItem
{
public function BigFontLegendItem()
{
super();
this.styleName = "<STRONG>ChineseFont</STRONG>


";
}

}
}

2. 然后定义样式, 在 Legend 中直接指定legendItemClass 为 BigFontLegendIte

view plaincopy to clipboardprint?
<mx:Style>
.<STRONG>ChineseFont</STRONG>


{
fontFamily:"Verdana","宋体";
fontSize:12;
}
</mx:Style>

<mx:Legend legendItemClass="com.BigFontLegendItem " />
<mx:Style>
.<STRONG>ChineseFont</STRONG>


{
fontFamily:"Verdana","宋体";
fontSize:12;
}
</mx:Style>

<mx:Legend legendItemClass="com.BigFontLegendItem " />

这样就可以设置Legend 中的字体大小或者样式了.

在flex chart中使用带链接的Legend

从LegendItem类中派生出LinkLegendItem类,并做两件事:
1. 设置鼠标为手型。
在构造函数中调用


this.buttonMode = true;
this.mouseChildren = false;

即可

2. 设置鼠标经过时,改变背景色。步骤:
a.在createChildren时添加一个背景画布(放最底层)
b.捕捉鼠标的over 和out事件,在鼠标经过时设置背景色可见,鼠标移出时,隐藏。

3. 设置Legend 的 legendItemClass="LinkLegendItem" 。 若需要捕捉legendItem的单击事件,设置ItemClick事件即可。

全部代码如下。

//LinkLegendItem
package
{
import flash.events.MouseEvent;
import flash.ui.Mouse;

import mx.charts.LegendItem;
import mx.containers.Canvas;

public class LinkLegendItem extends LegendItem
{
private var bgElement:Canvas;
private var _highlight:Boolean;
public function LinkLegendItem()
{
super();

//这两行设置鼠标样式为手形
this.buttonMode = true;
this.mouseChildren = false;

addEventListener(MouseEvent.MOUSE_OVER, handleEvent);
addEventListener(MouseEvent.MOUSE_OUT, handleEvent);
}

override protected function createChildren():void {
super.createChildren();

bgElement = new Canvas();
bgElement.setStyle("backgroundColor", 0x00ff00);
addChildAt(bgElement,0);
}

private function handleEvent(event:MouseEvent):void{
if(event.type == MouseEvent.MOUSE_OVER)
highlight = true;
else if(event.type == MouseEvent.MOUSE_OUT)
highlight = false;
}


public function set highlight(value:Boolean):void{
_highlight = value;
invalidateDisplayList()
}

protected override function updateDisplayList(unscaledWidth:Number,unscaledHeight:Number):void{
super.updateDisplayList(unscaledWidth, unscaledHeight);
graphics.clear();
graphics.beginFill(0,0);
graphics.drawRect(0,0,unscaledWidth,unscaledHeight);
graphics.endFill();

name = label;
bgElement.setActualSize(unscaledWidth, unscaledHeight);
if(_highlight)
bgElement.visible = true;
else
bgElement.visible = false;

}
}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值