FusionCharts Free(2)
上面已经说过了,要使用FusionCharts Free,只需要在项目包含FusionCharts.js和22个对应不同类型图表的.swf文件即可。
FusionCharts.js的主要作用是用于创建一个FusionCharts对象,这个对象将负责控制不同类型图表对应的.swf文件在页面上的显示。这个js文件没有解决Flash动画的遮盖问题,如果需要的话,可以自己手动在函数getSWFHTML中进行相应的修改:
getSWFHTML: function() {
var swfNode = "";
if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) {
// netscape plugin architecture
//去除flash文件遮盖
swfNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" wmode="transparent" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'" ';
//
} else { // PC IE
swfNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'">';
swfNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';
//去除flash文件遮盖
swfNode += '<param name="wmode" value="transparent" />';
var params = this.getParams();
//
}
return swfNode;
}
var swfNode = "";
if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) {
// netscape plugin architecture
//去除flash文件遮盖
swfNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" wmode="transparent" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'" ';
//
} else { // PC IE
swfNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'">';
swfNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';
//去除flash文件遮盖
swfNode += '<param name="wmode" value="transparent" />';
var params = this.getParams();
//
}
return swfNode;
}
图表是关于数据的可视化方案,那么如何为FusionCharts Free指定图表数据?
上述的22个对应不同类型图表的.swf文件只能接受XML格式的数据作为图表数据源,可以有2种主要的向这些.swf文件提供数据的方式——
- dataURL方式:指定一个指向包含图表数据的XML文档的URL,该方式对应的是FusionCharts对象的setDataURL方法
- dataXML方式:指定一个XML片断,该方式对应的是FusionCharts对象的setDataXML方法
这两种方式对应的XML数据是怎样传递到.swf文件的?使用FusionCharts.js文件创建的FusionCharts对象将负责连接用于图表显示的swf文件和图表要表现的数据源。
除了这两种为图表指定XML数据的方法之外,还可以通过FusionCharts.js文件中实现的一个Javascript方法updateChartXML,这种方式可以看作是对dataXML方式的一个扩展。
对于dataURL和dataXML方式如何进行选择?
一般情况下,建议使用的传递图表数据的方式是dataURL方式:
- 按照代码分离的原则,我们更希望可以单独管理图表数据XML文件和用于图表展示的HTML页面,相信没有人愿意在Javascript中使用变量保存一个结构可能很复杂的XML文档或片断
- 由于用于接收图表数据的swf文件对于非英文字母的特殊字符的敏感性,我们使用Javascript变量构造一个XML文档或片断时,可能遇到麻烦
Life is like a boat, and I'm at sea.