Open Flash Chart(以下称OFC)
说明:
1、OFC源码是开发工具FlashDevelop的工程,用FlashDevelop可以直接打开调试。
2、OFC源码的入口在main.as文件,直接运行此文件即可。
【扩展】扩展OFC作出了如下修改,以雷达图为例
【需求】给雷达图每个项目添加点击事件并与JavaScript交互。
【以下是修改的步骤】
1、打开elements.axis.RadarSpokeLabels类,
找到方法public function add( label:Object, style:Object ) : void
在对象 var label_style:Object={}里加属性serviceId:'',
2、再接着往下看,找到这一行:var l:TextField = this.make_label( label_style );
紧跟这一行添加如下三个事件:
l.addEventListener(MouseEvent.MOUSE_OVER, mouseoverHandle); //鼠标移入事件
l.addEventListener(MouseEvent.MOUSE_OUT, mouseoutHandle); //鼠标移出事件
l.addEventListener(MouseEvent.CLICK,clickhandle); //鼠标点击事件
然后在本类中添加这些事件的响应方法:
public function mouseoverHandle(event:MouseEvent):void{
(event.target as TextField).background = true;
(event.target as TextField).backgroundColor=0xFFFF00;
(event.target as TextField).textColor = 0xD80C00;
}
public function mouseoutHandle(event:MouseEvent):void{
(event.target as TextField).background = false;
(event.target as TextField).textColor = 0x000000;
}
public function clickhandle(event:MouseEvent):void {
trace(event.target.text+" serviceId=" + event.target.serviceId+" js方法:" + this.click_handel);
ExternalInterface.call(this.click_handel, event.target.text+" serviceId=" + event.target.serviceId);
}
3、在类开头定义全局变量:private var click_handel:String = "";
回到类的构造方法public function RadarSpokeLabels( json:Object )中,在构造方法的第一行添加代码
this.click_handel = json['click_handel'];
然后找到在构造方法中找到
this.style = {
colour:
'#784016'
};
在里面添加属性click_handel: json['click_handel']
源码修改完毕,基本满足需求。
【修改JSON数据格式】雷达图的json数据中做出如下修改:
1、在spoke-labels里面添加一项:"click_handel":"MyJsFunction"
这样就可以跟js交互。
2、在spoke-labels元素的labels中,每一项添加一个"serviceId":"值"