`
天梯梦
  • 浏览: 13730961 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

flex与JavaScript的数据交互

阅读更多

上一篇发了 flex3 接受外部参数 ,但是后来想想,应该更进一步的了解 flex与JavaScript的数据交互。

 

第一种:

 

test4.swf 代码:

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal" horizontalAlign="left">
	<mx:Script>
		<![CDATA[
		import flash.external.ExternalInterface;

		private function myClick(evt:MouseEvent):void {
		var item:Object = new Object();
		item.name = "Gideon";
		item.address = "New York";
		
		var results:Object = ExternalInterface.call("myfunc",item);
		//results为myfunc函数返回的对象
		display.text = 'Song: ' + results.song + '\nSinger: ' + results.singer + '\nYear: ' + results.year;
		}
		]]>
	</mx:Script>
	
	<mx:Button label="Click me" click="myClick(event);"/>
	<mx:TextArea id="display" height="70"/>
</mx:Application>

 

html:

 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<title>flex</title>
<head>

<script type="text/javascript">
function myfunc(item) {
    document.getElementById('ihere').innerHTML = 'My name is ' + item.name + ', and I live in ' + item.address + '.';
   
   //创建对象
    var results = new Object();
    results.song= 'Come Together !';
    results.singer = 'MJ';
    results.year = '1995';
    return results;
}
</script>

</head>
<body>
	<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="300" height="150">
       <param name="allowScriptAccess" value="always">
       <param name="movie" value="test4.swf">
	   <param name="allowFullScreen" value="true"></param>
       <param name="quality" value="high">
       <param name="bgcolor" value="#ffffff">
	   <PARAM name="wmode" value="transparent">
       <embed src="test4.swf" quality="high" wmode="transparent" bgcolor="#ffffff" width="300" height="150" allowScriptAccess="always" allowfullscreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
	</object>

	<br> Output: 
	<div id="ihere"></div>
</body>
</html>
 

第二种:

 

test4.swf 代码

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"  layout="horizontal" horizontalAlign="center" initialize="initApp()">
	<mx:Script>
		<![CDATA[
		import flash.external.ExternalInterface;
		/**
		*  initApp
		*  @return void
		**/
		private function initApp():void {
			//注册列表
			ExternalInterface.addCallback('backFun',callBack);
			
			//HTML 与 FLEX交互
			//params.flashvars = "xmlPath=hello&name=dante";
			var item:Object = Application.application.parameters;
			display.text = 'playname:' + item.playname + '\nvideoname:' + item.videoname + '\nwear:' + item.wear;
		}
		/**
		*  saveData
		*  @params item:Object  java    script    传过来的参数
		*  @return void
		**/
		private function callBack(item:Object):void {
			nameTxt.text = item.name;   
		}
		]]>
	</mx:Script>
	<mx:VBox>
		<mx:HBox> <mx:Label text="Callback"/> <mx:TextInput id="nameTxt"/> </mx:HBox>
		<mx:HBox> <mx:Label text="Geturl"/> <mx:TextArea id="display" height="70"/> </mx:HBox>		
	</mx:VBox>
</mx:Application>

 

html:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
	var flashvars = {
			playname: "test4.swf",
			videoname: "my player",
			wear: "clothes"
		};
	var params = {
			wmode: "transparent",
			bgcolor: "#ffffff",
			allowFullScreen: "true",
			allowScriptAccess: "always",
			quality: "high"
		};
	var attributes = {};
	attributes.id = "flashContent";
	swfobject.embedSWF("test4.swf", "flashContent", "300", "150", "9.0.0", "expressInstall.swf", flashvars, params, attributes);


	function callFlex(item) {
		//通过ID获得swf,也可以使用document.getElementById();
		//var swf = document.getElementById("flashContent");
		var swf = swfobject.getObjectById("flashContent");
		var item = {};
		item.name = document.getElementById("nameTxt").value;
		//调用Flex函数,传参item:Object
			swf.backFun(item);
		}
</script>
</head>
<body>
	<div id="flashContent">
		<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>
	</div>

		<table>
			<tr>
				<td>Name</td>
				<td><input type="text" id="nameTxt"/></td>
			</tr>
			<tr>
				<td colspan="2">
					<a href="javascript:callFlex();">Call Flex</a>
				</td>
			</tr>
		</table>
</body>
</html>
 

关于SWFObject,请参看 flex3 接受外部参数

 

 

SWFObject使用补充:

       swfobject.embedSWF()

       swfobject.getObjectById("swfID")

       swfobject.removeSWF("swfID")

 

一.swfobject.embedSWF:

内嵌swf文件,这个函数的参数比较多swfobject.embedSWF(swfUrl, id, width, height, version,expressInstallSwfurl, flashvars,params, attributes),各个参数具体功能如下:

  1. swfUrl(String,必须的)指定SWF的URL。
  2. id(String,必须的)指定将会被Flash内容替换的HTML元素(包含你的替换内容)的id。
  3. width(String,必须的)指定SWF的宽。
  4. height(String,必须的)指定SWF的高。
  5. version(String,必须的)指定你发布的SWF对应的Flash Player版本(格式为:major.minor.release)。
  6. expressInstallSwfurl(String,可选的)指定express install SWF的URL并激活Adobe express install。
  7. flashvars(String,可选的)用name:value对指定你的flashvars。
  8. params(String,可选的)用name:value对指定你的嵌套object元素的params。
  9. attributes(String,可选的)用name:value对指定object的属性。

注意 :在不破坏参数顺序的情况下,你可以忽略可选参数。如果你不想使用一个可选参数,但是会使用后面的一个可选参数,你可以简单的传入false作为参数的 值。对flashvars、params和 attributes这些JavaScript对象来说,你也可以相应的传入一个空对象{}。

 

二.swfobject.getObjectById("swfId")

 

通过swfid获得swf对象,通过该对象可调用flex函数。

 

三.swfobject.removeSWF("swfId") 通过swfId删除swf。

 

注意 :删除swf这里需要提醒下,因为embedSWF是替换标签,而不是填充。比如上面的例子<div id="myPanel">Flex content</div>,如果执行了swfobject.removeSWF后,想重新添加SWF必须要重新创建<div id="myPanel">或者更改embedSWF的第二个参数更改替换新的标签ID。因为在这里SWF替换了调了<div>

 

 

另附: Javascript 和 ActionScript3 的交互

 

需要这个包
import flash .external.ExternalInterface;

这是一个静态类,主要用两个方法:

 

ExternalInterface.addCallback(给Javascript的接口,AS函数位置,AS函数名)
ExternalInterface.call(Javascript函数名,传值)
 

AS给做一个接口,然后Flash就可以访问AS的接口,从而可以调用 AS的函数

ExternalInterface.addCallback("browse",this,upBrowse);
其中borwse是javascript 可以调用flash 的接口,upBrowse是AS的函数

ExternalInterface.call("upAllComplete",upCount);
这个是AS调用Javascript的接口
其中upAllComplete是Javascript的函数,upCount是需要传递的参数

废话少说,例子上。

这个是AS调JS

 

AS代码:

 

ExternalInterface.call("upAllComplete",upCount);

JS代码:

 

function upAllComplete(upData){
    //upData是AS中的upCount传过来的值,可以是对象,数组,字符串 ,数字
    alert(upData);
}

 

这个是JS调用AS的(有点麻烦)

JS代码:

 

var movieName = "testcommand";
//testcommand是HTML中Object的id和name,name和id要一样,这个是考虑到浏览器兼容性
function thisMovie() {
    if (navigator.appName.indexOf ("Microsoft") !=-1) {
         return window[movieName];
    } else {
         return document[movieName];
    }
}

thisMovie().browse(toSwfData);
//browse是swf函数upBrowse的映射名称

 

AS代码:

 

function upBrowse(jsData){
   trace(jsData);
}
ExternalInterface.addCallback("browse",this,upBrowse);
//映射upBrowse这个函数为接口browse

 
这个AS版本可以支持到Flash player 7(貌似),不过flash本身在浏览器就 提供一些接口,诸如:gotoAndPlay(),play(),stop()等等,这个用到的时候可以上网查一下。

 

分享到:
评论

相关推荐

    flex和javascript交互例子

    通过分析这些文件,我们可以深入理解Flex和JavaScript交互的细节,例如数据传递方式、错误处理机制、安全性考虑等。 总的来说,Flex和JavaScript的交互是Web开发中的关键技术,它使我们能够利用Flex的强大图形和...

    flex与PHP数据交互教程

    - Ajax(Asynchronous JavaScript and XML)非同步JavaScript和XML,允许在不刷新整个页面的情况下与服务器交换数据并更新部分网页内容。在Flex中,我们可以使用URLLoader类来实现类似Ajax的效果,发送异步HTTP请求...

    flex与ajax交互、flex与javascript交互.docx

    ### Flex与Ajax交互、Flex与JavaScript交互 #### 一、引言 随着Web技术的发展,Flex作为一种基于Adobe Flash平台的应用开发框架,在企业级应用中曾经非常流行。它提供了丰富的用户界面构建工具,并能够与服务器端...

    Flex与JavaScript交互实例

    Flex与JavaScript交互是一种常见的技术,它允许在Adobe Flex(基于ActionScript 3的富互联网应用程序框架)和网页中的JavaScript之间进行通信。这种交互性对于构建混合型应用,特别是在需要利用浏览器内核特性的Web...

    flex与js交互2

    ### Flex与JavaScript交互详解 #### 一、引言 随着Web技术的发展,不同语言之间的通信变得尤为重要。在Flex与HTML的结合中,Flex通常作为富客户端应用,而JavaScript则负责处理网页逻辑。为了实现二者之间的无缝...

    FLEX与JS数据交互,以及Google插件IFrame的使用

    `IFrame.as`可能定义了一个IFrame对象,包含了初始化、加载URL、与JavaScript交互等功能。而`IFrameExternalCalls.as`可能包含了一系列与外部JavaScript进行交互的方法,如添加回调、触发事件等。 在实际应用中,...

    Flex与JS交互

    Flex与JavaScript交互是Web开发中的一个重要技术,它允许在Adobe Flash Player或Adobe AIR环境中运行的Flex应用程序与HTML页面中的JavaScript代码进行通信。这种交互性极大地扩展了富互联网应用(RIA)的功能,使得...

    flex和javascript交互

    ### Flex与JavaScript交互详解 #### 一、在JavaScript中调用Flex方法 在Flex与JavaScript进行交互时,可以通过`ExternalInterface`实现从JavaScript调用Flex中的方法。这主要是通过向Flex应用注册特定的公共方法来...

    Flex 与javascript交互、C#读写Cookie

    在实现Flex与JavaScript交互时,你需要: 1. 在Flex端,使用`ExternalInterface.addCallback()`方法注册一个可供JavaScript调用的函数。 2. 在JavaScript端,通过Flash对象(通常是`swfObject`)来调用这个注册的...

    javascript与flex交互

    ### JavaScript与Flex交互知识点 #### 一、简介 在Web开发领域中,JavaScript与Flex的交互是一个非常实用且重要的技术组合。Adobe Flex是一种用于构建和部署丰富的互联网应用程序(RIA)的强大框架,它支持多种...

    Flex3与javascript相互交互验证

    Flex3与JavaScript之间的交互验证是Web开发中的一个重要概念,它允许Adobe Flex应用程序(基于ActionScript 3)与网页上的JavaScript代码进行通信。这种交互性极大地增强了富互联网应用(RIA)的功能,使得Flex组件...

    Flex与Servlet之间数据的交互

    Flex与Servlet之间的数据交互是JavaWeb开发中的一个重要环节,它涉及到客户端富互联网应用程序(RIA)与服务器端数据处理的协同工作。Flex作为一个基于Adobe Flash Player的前端开发框架,主要用于创建具有丰富用户...

    flex与JS交互示例

    Flex与JavaScript交互是Web开发中的一个重要技术,它允许在Adobe Flex应用和HTML页面之间进行数据交换和功能调用。在本示例中,我们将深入探讨如何实现这种交互,并通过具体的步骤来理解其工作原理。 首先,Flex是...

    FLEX数据传输与交互

    这简化了UI与数据模型之间的同步工作。 2. Model-View-Controller(MVC):FLEX鼓励使用MVC设计模式,分离业务逻辑、视图和数据模型。例如,Bindable注解可以标记可观察的属性,当这些属性变化时,视图会自动更新。...

    flex与js交互 关于ExternalInterface使用的小例子

    Flex与JavaScript的交互主要依赖于ExternalInterface,它使得ActionScript和JavaScript能够互相调用对方的函数,实现数据交换。这个过程涉及了函数注册、调用以及跨域和兼容性的处理。通过这样的交互,开发者可以...

    Flex与Javascript相互调用例子(附源码)

    标题中的“Flex与JavaScript相互调用例子”是指在Adobe Flex应用程序中如何与JavaScript进行交互的实践示例。Flex是一种基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。JavaScript则是一种...

    flex 和 javascript 测通

    6. **数据共享**:数据交换是Flex和JavaScript交互的重要部分。通过 ExternalInterface,可以将JSON、XML或其他数据格式在两者之间传递,实现数据的共享和同步。 7. **性能优化**:在大量交互时,需要注意性能问题...

    C#与flex交互

    标题中的"C#与Flex交互"指的是在开发过程中,使用C#作为后端处理逻辑,而Flex作为前端用户界面,两者之间进行数据和功能的通信。Flex是一种基于Adobe AIR和Flash Player运行时的开源框架,主要用于构建富互联网应用...

    flex 和 js 交互

    1. **跨域策略文件**:由于Flash Player的安全限制,Flex应用在与JavaScript交互前需要加载一个跨域策略文件,允许它与不同源的JavaScript进行通信。这个文件通常命名为crossdomain.xml,放置在服务器的根目录下。 ...

Global site tag (gtag.js) - Google Analytics