`
yinxvxv
  • 浏览: 51696 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

amcharts嵌入到flex中

阅读更多

amcharts是比较优秀的图表制作工具,它的效果是其他图表工具所无法比拟的。但是amcharts只给我们提示一组图表的控件,没有给我们良好的控制组件和其他的表现形式,但是flex却有丰富的组件可用,包括截图,动态加载图表。

这里先把flex嵌amcharts的实现写出来吧。这是受amcharts可视化配置的启示实现的。

1.先上amcharts的网站上体验一下吧。http://extra.amcharts.com/editor/column/ (这里是柱图),可以得到至少两个启示:

amcharts官网上的可视化配置界面,左边都是flex控件

 

这是用firebug查看到的请求信息

 

  a)这里flex是通过下面的地址来访问amcharts来访问的

   “http://extra.amcharts.com/editor/column/charts/amcolumn.swf?connection_id=amchartscolumn1246975480718&flash_width=600&flash_height=400&data_file=data/sample_data/column.xml&path=data/”

   于是下面也将用这种方式来加载amcharts。

  b)里面有一个amcharts_key.txt是用来让那个超链消失的,也就是说我们可以获得一个key。只要将这个文件放在你的指定的path路径下面就行了。

2.在flex里写好用来嵌入amcharts的mxml。

  加载amcharts的类,AmchartsLoader.as

package com.xvxv.aclass
{
	import mx.controls.SWFLoader;
	import mx.managers.SystemManager;
	
	public class AmchartsLoader extends SWFLoader
	{
		import mx.controls.SWFLoader;
		private var _swfUrl:String = "";
		private var _path:String = "";
		private var _settingsFile:String = "";
		private var _dataFile:String = "";
		public function AmchartsLoader()
		{
			super();
		}
		
		public function set swfUrl(swfUrl:String):void{
			while(swfUrl.indexOf("&")!=-1) swfUrl = swfUrl.replace("&", "%26");
			this._swfUrl = swfUrl;
		}
		
		public function set path(path:String):void{
			while(path.indexOf("&")!=-1) path = path.replace("&", "%26");
			this._path = path;
		}
		
		public function set settingsFile(settingsFile:String):void{
			while(settingsFile.indexOf("&")!=-1) settingsFile = settingsFile.replace("&", "%26");
			this._settingsFile = settingsFile;
		}
		
		public function set dataFile(dataFile:String):void{
			while(dataFile.indexOf("&")!=-1) dataFile = dataFile.replace("&", "%26");
			this._dataFile = dataFile;
		}

		public function loadChart():void{
			load(_swfUrl+"?path="+_path+"&settings_file="+_settingsFile+"&data_file="+_dataFile);
		}
	}
}

 

 嵌入amcharts的mxml,amchartflex.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()" 
	layout="absolute" backgroundAlpha="0" backgroundColor="#FFFFFF" 
	xmlns:ns1="com.xvxv.aclass.*">
	<mx:Style>
		Application{
			font-size:12px;
		}
	</mx:Style>
	<mx:Script>
		<![CDATA[
			import mx.controls.Button;
			import mx.controls.Label;
			import mx.controls.Alert;
			import com.xvxv.aclass.AmchartsLoader;
			
			private function init():void{
				var amchartsLoader:AmchartsLoader = new AmchartsLoader();
				amchartsLoader.percentWidth = 100;
				amchartsLoader.percentWidth = 100;
				amchartsLoader.swfUrl = Application.application.parameters["swf_url"];
				amchartsLoader.path = Application.application.parameters["path"];
				amchartsLoader.dataFile = Application.application.parameters["data_file"];
				amchartsLoader.settingsFile = Application.application.parameters["settings_file"];
				this.addChild(amchartsLoader);
				amchartsLoader.loadChart();

				var button:Button = new Button();
				button.x = 10;
				button.y = this.height - 50;
				button.label = "button in flex!";
				button.addEventListener(MouseEvent.CLICK,function():void{
					Alert.show("这个按扭是flex里的,这个图是amcharts做的!","提示");
				});
				this.addChild(button);
			}
		]]>
	</mx:Script>

</mx:Application>

 

在AmchartsLoader是SwfLoader的子类,只是在里面添加了几个属性而已,swfUrl用来指定加载的amcharts的swf实例的中径,本例中用的是amcolmun.swf,也就是柱图,dataFile与settingsFile分别是数据文件的路径与配置文件的路径,与amcharts中一致,不用说明。然后多了一个方法,就是用拼接url的方式将所有和外部参数传入swf中,这是借签了amcharts网站上的可视化配置器。

在amchartflex.mxml中新建了一个AmchartsLoader类,并简单的设置了他们的属性,其中swf_url,path,data_file,settings_file都是从外部获得的参数,然后添加到应用上,下面用一个按扭是为了测试而用的。

OK一个完整的可加载amcharts的swf就生成了,在bin-debug中找到amchartflex.swf,就是我们想要得到的amcharts加载器。

3.如何加载

先把amchartflex.swf拷到你的amcolumn文件夹下。

这里只要改一下原来的html页面就可以了,下面以amcolumn.html为例:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Column & Bar chart</title>
</head>

<body>
  <script type="text/javascript" src="amcolumn/swfobject.js"></script>
	<div id="flashcontent">
		<strong>You need to upgrade your Flash Player</strong>
	</div>

	<script type="text/javascript">
		// <![CDATA[
		/**原本的内容
		var so = new SWFObject("amcolumn/amcolumn.swf", "amcolumn", "520", "400", "8", "#FFFFFF");
		**/
		
		//下面两行是新的内容
		var so = new SWFObject("amchartflex.swf", "amcolumn", "520", "400", "8", "#FFFFFF");
		so.addVariable("swf_url", "amcolumn/amcolumn.swf");

		so.addVariable("path", "amcolumn/");
		so.addVariable("settings_file", encodeURIComponent("amcolumn/amcolumn_settings.xml"));
		so.addVariable("data_file", encodeURIComponent("amcolumn/amcolumn_data.xml"));
		so.write("flashcontent");

		// ]]>
	</script>
</body>
</html>

 

 从上面可以看到只要修改一个地方就OK了,原来加载的是amcolumn.swf而现在加载的是amchartflex.swf,amcolumn.swf是通过swf_url来指定的。

下面是效果,当点击按钮时弹出的对话框。

测试的时候最好在服务器上测试,因为一个swf加载另一个swf在本地测试可能失败。

附件中用一个tomcat上可以运行的例子,和两个flex源码。

  • 大小: 8.9 KB
  • 大小: 16.5 KB
  • 大小: 26.4 KB
分享到:
评论
3 楼 chinacssnj 2014-07-11  
       
2 楼 yinxvxv 2009-09-09  
是的flex里有chart组件,但是样式和amchart有很大的差别。
1 楼 huaz98 2009-09-07  
很不错,谢谢,现在好像flex 组件有这样的charts 了

相关推荐

    amcharts_flex_components_1.8.1.3

    这个版本1.8.1.3是amCharts Flex组件的一个更新,它提供了一系列的组件和功能,帮助开发者在Flex环境中构建动态图表和图形。 首先,让我们深入了解`amcharts`。amCharts 是一款广泛使用的JavaScript和Flash图表库,...

    amcharts_flex_components_1.6.2.1.zip_am flex charts_amChartsFB3_

    标题中的"amcharts_flex_components_1.6.2.1.zip"表明这是一个关于amCharts Flex组件的软件包,版本号...通过示例、文档和构建工具,开发者可以轻松地将这些组件整合到他们的Flex应用中,以实现数据的生动展示和分析。

    amcharts_flex_components_1.8.3.3

    《深入解析amcharts_flex_components_1.8.3.3:打造卓越的Flex图表体验》 在IT行业中,数据可视化...在深入学习和实践中,开发者可以不断探索amCharts_flex_components的潜力,为各类项目带来更出色的数据展现效果。

    amcharts_flex_components_1.8.3.4

    本文将详细介绍amcharts_flex_components_1.8.3.4的关键特性,并探讨其在现代Web开发中的价值。 1. **amcharts简介** amcharts是一个跨平台的图表库,支持JavaScript、Flex、Silverlight和Flash等多种技术。在Flex...

    amcharts3D flex帮助文档

    4. **数据绑定**: Flex中的数据绑定机制可以将图表直接与后台数据源连接,实现数据的实时更新。 5. **自定义与扩展**: 开发者可以通过覆盖默认行为、添加自定义事件处理程序和扩展现有组件,对amCharts的功能进行...

    amcharts-flex-charts

    在Flex中,amcharts-flex-charts库能够帮助开发者实现动态的数据可视化。 【压缩包子文件的文件名称列表】中: - amstock.html:这可能是一个包含AmStockChart组件示例的HTML文件,AmStockChart是amcharts提供的一...

    amcharts for flex

    - 首先,开发者需要将amcharts的Flex库引入到项目中,这通常通过MXML或AS3代码导入库文件来完成。 - 然后,创建图表对象,配置数据源和图表类型。 - 接着,可以自定义图表样式,如颜色、标签、动画等。 - 最后,...

    amcharts Flex报表工具

    amcharts_flex_components_1.8.3.2 也是flex报表工具之一,很小易用很方便! flex的三大几个常用的报表工具分别是: Ilog IBM公司收费的 amcharts openflashchart FusionCharts

    破解过的Flex amcharts,有例子

    破解后的swc文件,选择CYC标签 博文链接:https://aimy-2012.iteye.com/blog/1890944

    amcharts柱状图配置中文解析.pdf

    Amcharts柱状图配置中文解析 Amcharts是一款功能强大且流行的数据可视化工具,广泛应用于Web开发、数据分析和商业智能等领域。Amcharts柱状图配置是其核心组件之一,提供了丰富的自定义选项,满足不同用户的需求。...

    amcharts flex component

    1. **安装与引入**:首先,需要将amCharts的库文件引入到Flex项目中,通常通过MXML或ActionScript代码引用库文件。 2. **创建图表**:根据需求选择合适的图表类型,实例化对应的Chart类。 3. **设置数据源**:将...

    flex amCharts的swc

    flex amCharts图表的第三方工具包,希望能帮到大家。

    amcharts中折线图配置中文解析

    amcharts折线图配置中文解析,实用中文注释。

    flex_amcharts

    在Flex项目中集成AmCharts,你需要先引入相关的库文件,然后创建图表对象,设置数据源,最后将图表添加到显示列表中。此外,AmCharts提供详尽的API文档和示例代码,帮助开发者快速上手。 总之,Flex_AmCharts是Flex...

    WPF中使用amCharts绘制股票K线图源码的demo

    1. **引入amCharts库**:由于amCharts主要是为Web设计的,所以我们需要将JavaScript代码嵌入到WPF应用中。这可以通过使用WebBrowser控件来实现。首先,确保在项目中添加WebBrowser引用,并在XAML文件中添加控件。 2...

    amcharts中柱状图配置中文解析

    amcharts中柱状图配置中文解析

    amcharts官方离线文档

    AmCharts是一款强大的JavaScript图表库,它提供了丰富的图表类型和高度定制的功能,使得在Web应用中创建交互式、可视化数据变得轻而易举。这款库适用于各种项目,从简单的个人博客到复杂的商业数据分析平台。本文将...

    使用amCharts制作的基于c# wpf的股票K线图源码

    在XAML中定义数据模板,映射这些字段到amCharts的属性。 ```xml &lt;amCharts:OHLCSeries OpenValuePath="Open" HighValuePath="High" LowValuePath="Low" CloseValuePath="Close" CategoryValuePath="Date" /&gt; ``` ...

    amCharts开发实例

    在ASP.NET开发环境中,amCharts可以轻松地集成到项目中,帮助开发者创建出交互式、动态且美观的数据图表,以直观地展示复杂数据。 一、amCharts概述 amCharts由一系列可自定义的图表类型组成,包括折线图、柱状图、...

Global site tag (gtag.js) - Google Analytics