`

Java Web使用swfobject调用flex图表

 
阅读更多
Java Web使用swfobject调用flex图表

在js中使用open flash Chart的swfobject.js来调用flex生成的swf文件,动态地把数据传入swf文件接口,生成相应的flash。SWFObject是一个用于在HTML中方面插入Adobe Flash媒体资源(*.swf文件)的独立、敏捷的JavaScript模块,我们可以事先写好HTML的其他部分,最后再回过头来添加Flash内容,这样可以确保在客户端没有Flash的情况下,用户不会一无所获,也能确保flash能正常显示,不会出现有时能显示,有时不能显示的情况。Swfobject能够解决HTML与flash参数传递的问题,每次数据有更新,flash内容也能更着更新。
 下面简单介绍js与flash交互的过程:
1. 下载swfobject.js,在vm文件中包含该js文件;
2. 你的 HTML 中写一个用来放 Flash 的div
比如: (给一个你想取的id 比如 swfcontent, 然后在这个div里放上你的替换内容.) 

	<div id="myContent">
	<h1>Alternative content</h1>
	<p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p></div>

这个div?放替换内容, 用来在 Flash 无法显示时显示,一般是这么设置的,如果显示不了,会显示一个下载新版本的flash播放器链接。

3. 在HTML中写下面的一段js代码:
		<script type="text/javascript">			
		YYchart("BarChart.swf", "myContent","callApp1","objectIDAndName", 600,600)	//柱状图数据格式												   
		function callApp1() {	
					var aryDailyVoucher= [ 
					{date: "type1", close: 41.71},  
					{date: "type2", close: 42.21},  
					   {date: "type3", close: 42.11},  
					 {date: "type4", close: 42.71},  
					  {date: "type5", close: 42.99}];
				var obj2= [  
				{yField:"close",displayName:""}  //纵坐标是close字段,横坐标是date字段
				] ;   	      							swfobject.getObjectById("objectIDAndName").dataSourceFunc(aryDailyVoucher,obj2,"date"); 				
	}
	</script>
	
YYchart公用函数是这样的:
	
	Function YYchart(swfSrc,innerIDName,funcName,objectIDAndName,widthVar,heightVar)
	{
		varWidth="100%";
		varHeight="250";
		if(widthVar){
			varWidth=widthVar
		}
		if(heightVar){
			varHeight=heightVar
		}
		var flashvars = {funcName: funcName}; 
		var params = {menu: "false",wmode: "opaque"};
		var attributes = {id: objectIDAndName,name: objectIDAndName}; 
		swfobject.embedSWF(swfSrc, innerIDName, varWidth, varHeight, "9.0.15","expressInstall.swf", flashvars, params, attributes); 
	}

最终是使用swfobject.embedSWF把数据传入flash然后显示flash。

	swfobject.embedSWF(swfUrl,id,width,height,version,expressInstallSwfurl, flashvars,params, attributes),各个参数具体功能如下: 
	swfUrl(String,必须的)指定SWF的URL。 
	id(String,必须的)指定将会被Flash内容替换的HTML元素(包含你的替换内容)的id。 
	width(String,必须的)指定SWF的宽。 
	height(String,必须的)指定SWF的高。 
	version(String,必须的)指定你发布的SWF对应的Flash Player版本(格式为:major.minor.release)。 
	expressInstallSwfurl(String,可选的)指定express install SWF的URL并激活Adobe express install。 
	flashvars(String,可选的)用name:value对指定你的flashvars。 
	params(String,可选的)用name:value对指定你的嵌套object元素的params。 
	attributes(String,可选的)用name:value对指定object的属性。 
	注 意 :在不破坏参数顺序的情况下,你可以忽略可选参数。如果你不想使用一个可选参数,但是会使用后面的一个可选参数,你可以简单的传入false作为参数的 值。对flashvars、params和 attributes这些JavaScript对象来说,你也可以相应的传入一个空对象{}。
	这里参数
	var flashvars = {funcName: funcName}; 的funcName就是上面的callApp1,callApp1函数里面通过swfobject.getObjectById("objectIDAndName")获得swf对象,通过该对象可调用flex函数dataSourceFunc(aryDailyVoucher,obj2,"date"),这样就能把数据传入flex做渲染。
	var params = {menu: "false",wmode: "opaque"};这里可以设置一些flash显示的一些参数,比如wmode: "opaque"就是设定flash展示的时候可以显示在div层的下面。
	var attributes = {id: objectIDAndName,name: objectIDAndName};这里是设置flash显示的时候的div id和div name属性。

4. flex中生成BarChart.swf的代码是这样的:

4.1首先在BarChart.mxml中写上柱状图的类似html标签的控件,

		  <mx:Panel title="ColumnChart and BarChart Controls Example"
				  height="100%"
				  width="100%"
				  layout="horizontal">
			<mx:ColumnChart id="column"
							height="100%"
							width="100%"
							paddingLeft="5"
							paddingRight="5"
							showDataTips="true">

			</mx:ColumnChart>  

			<mx:Legend dataProvider="{column}"/>
		</mx:Panel>
		
mx:Panel是一个面板,在这个面板中放置一个mx:ColumnChart柱状图, mx:Legend是设置数据提示的显示。

4.2 在创建后整个mx:Application后需要使用creationComplete="initApp()",表示创建后需要就调用该函数,在initApp()函数中:

	internal function initApp():void
		{	
	ExternalInterface.addCallback("dataSourceFunc",dataSourceChange);
	ExternalInterface.call(Application.application.parameters.funcName);
	}

ExternalInterface.addCallback将 ActionScript 方法注册为可从容器调用,成功调用 addCallBack() 后,容器中的 JavaScript 或 ActiveX 代码可以调用在 Flash Player 中注册的函数。也就是js调用dataSourceFunc函数,相应的flex就会调用dataSourceChange这个函数去填充flash内容,dataSourceFunc就是上面的js函数中的swfobject.getObjectById("objectIDAndName").dataSourceFunc(aryDailyVoucher,obj2,"date"); 	dataSourceChange就是下面会说到的flex中的函数。EternalInterface.call(Application.application.parameters.funcName)
Flex调用js函数,Application.application.parameters.funcName的值就是上面flashvars = {funcName: funcName}的funcName的函数名,也就是HTML页面的initApp()函数。

4.3 flex中的dataSourceChange函数是这样的,

 public function dataSourceChange(dataArr:Object, yFieldArr:Object, xField:Object):void
这个函数的几个参数对应swfobject.getObjectById("objectIDAndName").dataSourceFunc(aryDailyVoucher,obj2,"date")的这几个参数,这样flex就能条用js的这个函数,把数据传入到flex中,在flex的这个函数就能对这些数据进行处理,最后完成flash的数据填充。
代码请看其它附件。

 

原文:http://www.javaarch.net/jiagoushi/612.htm

0
0
分享到:
评论

相关推荐

    flex做的四种图表(线、柱、饼、区域)直接用js调用

    在本项目中,"flex做的四种图表(线、柱、饼、区域)直接用js调用"指的是使用Flex技术创建的四种常见的数据可视化图表:线图、柱状图、饼图和区域图,并且这些图表可以通过JavaScript与Web前端进行交互。 线图是一...

    flex&flash相互调用

    当Flex应用程序需要利用Flash的高级图形或动画能力时,可以使用SWFObject库将Flash内容嵌入到Flex应用中。通过使用ExternalInterface API,Flex可以调用Flash对象中的公开方法。首先,在Flash中定义一个可外部访问...

    flash嵌入web页面(swfobject)

    本教程将详细解析如何使用SWFObject来实现这一过程。 一、SWFObject简介 SWFObject是一个开源的JavaScript解决方案,由Georg Richter开发,它解决了早期Flash插件检测和嵌入的问题,使得网页开发者能够优雅降级,即...

    使用SWFObject.js文件嵌入swf文件的应用

    2. **工作原理**:SWFObject使用的主要方法是`swfobject.embedSWF()`。这个函数接收多个参数,包括SWF文件的URL、在网页中的宽度和高度、替代内容(在用户没有Flash时显示)、Flash版本号等。通过动态创建`&lt;object&gt;`...

    SWFObject_2.0_使用方法

    - 通过 JavaScript 动态生成 `&lt;object&gt;` 和 `&lt;embed&gt;` 标签,或者直接调用 SWFObject 提供的函数来嵌入 Flash 内容。 ### 7. 从 SWFObject 1.5 迁移到 SWFObject 2.0 的注意事项 - **API 变化**:了解新版本中 API...

    flex/java通信包

    总的来说,这个压缩包提供了使用Flex和Java进行通信所需的组件,尤其是对于那些需要实时数据交互和复杂企业级功能的项目。通过部署ds-console.war和dataservices.war,开发者可以轻松地管理和优化Flex与Java应用之间...

    AS3与JS交互通信(使用swfObject插入Flash)

    2、使用swfObject向页面中插入Flash文件。 3、使用Flash中的ExternalInterface.call方法和fscommand方法对JS进行调用与传送数据。 4、使用Flash中的ExternalInterface.addCallback方法创建接口,使JS能够调用AS中的...

    swfobject 2.0

    在"描述"中提到的,SWFObject是“易用的、符合标准的”,这意味着它遵循Web开发的最佳实践,如使用语义化的HTML标记,确保网站在没有Flash的情况下仍能正常工作。只需在网页中引入一个小型的JavaScript文件,开发者...

    flex与web的结合

    - **Web服务调用**:Flex可以直接与各种Web服务(如SOAP、RESTful)交互,获取或提交数据,实现Web应用的功能扩展。 在实际开发中,选择合适的嵌入方法和结合策略取决于项目需求、目标用户群和浏览器兼容性等因素...

    Flex入门教程-Web和RIA工程实例

    Flex入门教程——Web和RIA工程实例是一份专为初学者设计的教程,旨在帮助学习者掌握Adobe Flex这一强大的富互联网应用程序(RIA)开发框架。Flex是基于ActionScript和MXML,用于构建交互式、高性能的Web应用的工具,...

    Flex4.5 与js,ocx相互调用

    JavaScript 调用 Flex 函数通常需要在 Flex 中先声明该函数为可外部访问的,然后在 JS 中通过 SWFObject 注册的名称来调用。 2. **Flex 与 ActiveX 控件交互**: Flex 4.5 支持与 ActiveX 控件的交互,主要是通过 ...

    swfobject

    **SWFObject:高效插入Flash内容的技术** SWFObject 是一个JavaScript库,广泛用于在网页中无缝、动态地插入...尽管Flash已经过时,理解SWFObject的工作原理和使用方法,对于理解Web发展历史和技术变迁仍然很有价值。

    swfobject-master.zip

    在Web开发中,播放FLV视频需要Flash Player支持,而SWFObject则是实现这一目标的关键工具。它能够检测用户的浏览器是否安装了正确的Flash Player版本,并在必要时提供升级提示,确保视频内容的顺利播放。 压缩包内...

    SWFObject Flash js调用类

    SWFObject是一个广泛使用的JavaScript类库,它主要用于在网页中嵌入Flash内容,同时提供了一系列便捷的功能,包括但不限于版本检测、FlashVars支持、设置FLASH内联参数以及获取URL中的变量等。在以往,开发者在网页...

    符合web标准的flash调用方法,解决了浏览器对flash的影响

    总结起来,通过使用`swfobject.js`,开发者可以创建符合Web标准的Flash调用,确保Flash内容在不同浏览器中的一致性和兼容性,同时提供对不支持Flash用户的合理备选方案。尽管随着HTML5的普及,Flash的使用已经大大...

    图表工具(Open_Flash_Chart)在java中的使用

    Open Flash Chart是一款强大的图表工具,尤其适用于Java开发者。它是一个基于Flash的图形库,能够创建出美观、流畅的图表,支持多种图表类型,包括条形图、饼图、线图等,总计11种基本图形,能满足大多数数据分析和...

    JS与Flex通信、互转例子

    在某些场景下,如Java+Flex项目中,需要实现JS与Flex之间的通信,以便于网页与桌面应用或者Web服务进行数据交换。本篇文章将详细讲解JS与Flex之间的通信方式以及互转实例。 首先,我们探讨JS与Flex之间的通信机制。...

    SWFObject

    它的核心功能通过几个简单的函数调用即可实现,如`swfobject.embedSWF()`。 8. **SEO友好**:由于SWFObject采用标准HTML语法,搜索引擎可以更容易地索引和理解网页内容,这对于提升网站的搜索引擎排名非常重要。 ...

    js > swfobject.js 使用

    在Web开发中,JavaScript是一种强大的客户端脚本语言,而SWFObject.js是一个用于在HTML页面中嵌入Adobe Flash内容的JavaScript库。这个库广泛应用于那些希望在网页中集成多媒体体验,如视频播放、游戏或动画的开发者...

Global site tag (gtag.js) - Google Analytics