`
Supanccy2013
  • 浏览: 224966 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

flex 之JavaScript 和ActionScript互通

    博客分类:
  • Flex
阅读更多
注:原创作品,分享以供交流学习,转载请注明出处。

    JavaScript和flex互通全是通过ExternalInterface 这个接口。
    ExternalInterface 类是外部 API,这是一个在 ActionScript 和 Flash Player 容器之间实现直接通信的应用程序编程接口,例如,包含 JavaScript 的 HTML 页。Adobe 建议使用 ExternalInterface 实现 JavaScript 与 ActionScript 之间的所有通信。
在 Flash Player 中,可以使用 HTML 页中的 JavaScript 来调用 ActionScript 函数。ActionScript 函数可以返回一个值,JavaScript 会立即接收它作为该调用的返回值。

总结:
1,JavaScript要调用flex中的ActionScript,需要flex中实现注册好被JavaScript调用的ActionScript函数,例如:
//第一步:在mxml应用程序启动后执行:把js可以调用的ActionScript 函数注册
public function initApp():void 
{   
//把flexHelloWorld 函数注册成名为flexHelloWorld,可以供js调用
				ExternalInterface.addCallback("flexHelloWorld", flexHelloWorld);   
}


2,js调用flex的方式:
function callFlexFunction() 
{   
document.getElementById("supanccy").flexHelloWorld("Hello", "world");    
}  


3,flex中调用javascript函数的方式:
//mxml应用程序上输入框内容改变事件处理函数
protected function userName_changeHandler(event:TextOperationEvent):void
{
//在flex中调用页面中JavaScript的函数
var s:String = ExternalInterface.call("helloJs", "chenchaoyang");   
}



实例:
flex程序:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
			   creationComplete="facade.startup(this)"
			   initialize="initApp()"
			   >
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	
	<fx:Script>
		<![CDATA[
			import spark.events.TextOperationEvent;
			import mx.controls.Alert;
			import supan.MyFacde;
			private var facade:MyFacde = MyFacde.getInstance();
			
			//第一步:在mxml应用程序启动后执行:把js可以调用的ActionScript 函数注册
			public function initApp():void 
			{   
				//把flexHelloWorld  ActionScript函数注册成名为flexHelloWorld,可以供js调用
				ExternalInterface.addCallback("flexHelloWorld", flexHelloWorld);   
			}
			
			//供js调用的ActionScript函数,这里的param1,param2是从js传递回来的参数
			public function flexHelloWorld(param1:String, param2:String):void 
			{   
				Alert.show("param1: " + param1 + "; param2:" + param2);   
			}  

			//mxml应用程序上输入框内容改变事件处理函数
			protected function userName_changeHandler(event:TextOperationEvent):void
			{
				//在flex中调用页面中JavaScript的函数
				var s:String = ExternalInterface.call("helloJs", "chenchaoyang");   
			}

		]]>
	</fx:Script>
	
	<s:TextInput id="userName" change="userName_changeHandler(event)" x="215" y="173"/>
</s:Application>


html页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0014)about:internet -->
<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=utf-8" />
        <style type="text/css" media="screen"> 
			html, body	{ height:100%; }
			body { margin:0; padding:0; overflow:auto; text-align:center; 
			       background-color: #ffffff; }   
			#flashContent { display:none; }
        </style>
		
        <link rel="stylesheet" type="text/css" href="history/history.css" />
        <script type="text/javascript" src="history/history.js"></script>
		    
        <script type="text/javascript" src="swfobject.js"></script>
		<script type="text/javascript" >
               function callFlexFunction() 
			   {   
                    var x = document.getElementById("supanccy").flexHelloWorld("Hello", "world");    
                }  

		       function javascriptFunction(msg)
			   {
			     alert("this information come from html's javascript function:" + msg);
			   }
		</script>
        <script type="text/javascript">
            <!-- For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. --> 
            var swfVersionStr = "10.0.0";
            <!-- To use express install, set to playerProductInstall.swf, otherwise the empty string. -->
            var xiSwfUrlStr = "playerProductInstall.swf";
            var flashvars = {};
            var params = {};
            params.quality = "high";
            params.bgcolor = "#ffffff";
            params.allowscriptaccess = "sameDomain";
            params.allowfullscreen = "true";
            var attributes = {};
            attributes.id = "supanccy";
            attributes.name = "supanccy";
            attributes.align = "middle";
            swfobject.embedSWF(
                "supanccy.swf", "flashContent", 
                "100%", "100%", 
                swfVersionStr, xiSwfUrlStr, 
                flashvars, params, attributes);
			<!-- JavaScript enabled so display the flashContent div in case it is not replaced with a swf object. -->
			swfobject.createCSS("#flashContent", "display:block;text-align:left;");
        </script>
    </head>
    <body onload="callFlexFunction();">

        <div id="flashContent">
        	<p>
	        	To view this page ensure that Adobe Flash Player version 
				10.0.0 or greater is installed. 
			</p>
			<script type="text/javascript"> 
				var pageHost = ((document.location.protocol == "https:") ? "https://" :	"http://"); 
				document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='" 
								+ pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a>" ); 
			</script> 
        </div>
	   	
       	<noscript>
            <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" id="supanccy">
                <param name="movie" value="supanccy.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <param name="allowScriptAccess" value="sameDomain" />
                <param name="allowFullScreen" value="true" />
                <!--[if !IE]>-->
                <object type="application/x-shockwave-flash" data="supanccy.swf" width="100%" height="100%">
                    <param name="quality" value="high" />
                    <param name="bgcolor" value="#ffffff" />
                    <param name="allowScriptAccess" value="sameDomain" />
                    <param name="allowFullScreen" value="true" />
                <!--<![endif]-->
                <!--[if gte IE 6]>-->
                	<p> 
                		Either scripts and active content are not permitted to run or Adobe Flash Player version
                		10.0.0 or greater is not installed.
                	</p>
                <!--<![endif]-->
                    <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>
                <!--[if !IE]>-->
                </object>
                <!--<![endif]-->
            </object>
	    </noscript>		
   </body>
</html>

分享到:
评论

相关推荐

    flex和javascript交互例子

    在IT行业中,Flex和JavaScript之间的交互是Web开发中的一个重要知识点,尤其在构建富互联网应用程序(RIA)时。Flex是一款基于Adobe Flash Player运行时的开源框架,用于创建动态、交互式的用户界面,而JavaScript则...

    flex 3.0 actionscript 2.0

    Flex 3.0 和 ActionScript 2.0 是 Adobe 推出的用于构建富互联网应用程序(RIA)的技术栈。Flex 是一个开源框架,主要用于创建交互式、数据驱动的Web应用程序,而ActionScript是其核心编程语言,早期版本为...

    flex 和 javascript 测通

    Flex和JavaScript交互是Web开发中的一个重要领域,尤其在构建富互联网应用程序(RIA)时。这两个技术结合使用,可以实现强大的用户界面和动态功能。本文将深入探讨Flex与JavaScript的交互机制,以及如何实现它们之间...

    Adobe提供的Flex解析Json的ActionScript包

    Adobe Flex是一种开源的框架,主要用于构建富互联网应用程序(RIA),它使用ActionScript编程语言和MXML标记语言。在处理数据交换时,特别是与服务器进行异步通信时,JSON(JavaScript Object Notation)格式因其轻...

    flex actionscript学习笔记

    随着Flash的发展,ActionScript逐渐演进,如Flash 5引入了JavaScript式的语法和简单的面向对象编程(OOP)功能。Flash MX 2004带来了ActionScript 2.0,引入了类型检测和类语法,提高了代码的可维护性和调试效率。 ...

    flex和javascript交互

    ### Flex与JavaScript交互详解 #### 一、在JavaScript中调用Flex方法 ...以上所述的方法使得Flex和JavaScript能够有效地相互调用,从而实现更复杂的交互式功能。这对于开发具有丰富交互性的Web应用程序是非常有用的。

    flex中文帮助 ActionScript3.0中文帮助

    ActionScript 3.0 语言和组件参考概述Adobe Flex 2 语言参考ActionScript 3.0 语言和组件参考是适用于 Flash® Player 应用程序编程接口 (API) 的参考手册。 Adobe Flex 2 语言参考ActionScript 3.0 语言和组件...

    《Flex入门》及ActionScript 3.0 语言

    《Flex入门》及ActionScript 3.0 语言是针对Adobe Flex这一开发框架的基础学习资料,旨在帮助初学者快速掌握Flex应用开发的核心概念和技术。Flex是用于构建富互联网应用程序(RIA)的开源框架,它结合了强大的MXML...

    精通Flex 3.0——基于ActionScript 3.0实现_源代码

    《精通Flex 3.0——基于ActionScript 3.0实现》一书源代码。 Flex 3.0 ActionScript 3.0源代码 Flex 3.0源代码。 --------------------------- 第1篇 Flex技术概述 第1章 Flex概述 3 1.1 Flex简介 3 1.2 Flex...

    Flex4 Declarations in ActionScript

    总结,Flex4在ActionScript中的声明式编程大大简化了Flex应用的开发过程,提高了代码可读性和维护性。通过声明组件、皮肤、状态、事件处理和效果,开发者可以专注于业务逻辑,而不是底层实现细节。这种编程方式使得...

    javascript和actionscript之间通信实例

    JavaScript 和 ActionScript 之间的通信是跨平台开发中的一个重要概念,特别是在构建富互联网应用程序(RIA)时,例如使用 Adobe Flash 平台。这两种语言虽然在不同的环境中运行,但可以通过多种技术实现交互,为...

    Flex与ActionScript编程

    FLEX开发入门的一本好书。讲解了actionscript的使用。

    Flex 和 ActionScript 关系

    Flex和ActionScript的关系紧密而复杂,它们共同构成了Adobe的富互联网应用(RIA)开发平台。Flex是一种用于构建交互式用户界面的框架,而ActionScript是运行在Flash Player或Adobe AIR中的主要编程语言。这两个技术...

    flex开发入门 actionscript

    ActionScript则是Flex开发中的重要组成部分之一,它是一种基于ECMAScript标准的强大脚本语言。ActionScript被用来编写业务逻辑和控制Flex应用程序的行为,是Flex应用程序的灵魂所在。通过结合使用Flex和ActionScript...

    flex 3 programming actionscript 3

    《Flex 3编程ActionScript 3》是一本深入探讨Adobe Flex 3开发技术的专业书籍,主要...通过阅读adobe flex 3 programming actionscript 3.pdf,你将踏上探索Flex 3世界和ActionScript 3编程之旅,提升你的RIA开发技能。

    javascript与flex交互

    通过JavaScript与Flex的交互,开发者可以实现更多功能上的扩展和集成。需要注意的是,在进行跨语言交互时,要确保数据类型的一致性和安全性,避免因为类型不匹配或恶意代码注入等问题导致的安全隐患。此外,对于复杂...

    Flex AcrionScript 和 JavaScript 通讯

    Flex ActionScript与JavaScript之间的通信是Web开发中的一个重要概念,它允许在Adobe Flash Player中的Flex应用程序与HTML页面上的JavaScript代码之间交换数据和控制交互。这种通信机制对于创建富互联网应用程序...

    精通flex3.0源码基于Actionscript3实现

    《精通Flex 3.0:基于ActionScript 3实现》是一本深度探索Flex 3.0框架源码的专业书籍,其核心是通过ActionScript 3这一强大的编程语言...结合书中提供的源码和实例,理论与实践相结合,将使你的Flex之旅更加得心应手。

    javascript与actionscript的交互.[课件]

    JavaScript 和 ActionScript 是两种在 Web 开发中广泛使用的脚本语言,它们分别在浏览器环境(JavaScript)和 Adobe Flash 平台(ActionScript)上运行。虽然它们语法上有许多相似之处,但它们的应用场景和交互方式...

Global site tag (gtag.js) - Google Analytics