`
ytm
  • 浏览: 13517 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

flex 和js 函数的相互调用(转)

阅读更多

一、在JavaScript中调用Flex方法
在Flex中可以用ExternalInterface来调用Flex的方法,途径是通过在Flex应用可调用方法列表中添加指定的公用方法。在Flex应用中通过调用addCallback()可以把一个方法添加到此列表中。addCallback将一个ActionScript的方法注册为一个JavaScript和VBScript可以调用的方法。
addCallback()函数的定义如下:
addCallback(function_name:String, closure:Function):void
function_name参数就是在Html页面中脚本调用的方法名。closure参数是要调用的本地方法,这个参数可以是一个方法也可以是对象实例。

举个例子:
<mx:Script>
    import flash.external.*;
    public function myFunc():Number {
        return 42;
    }
    public function initApp():void {
        ExternalInterface.addCallback("myFlexFunction",myFunc);
    }
</mx:Script>
那么在Html页面中,先获得SWF对象的引用,也就是用<object .../>声明的Swf的Id属性,比如说是MyFlexApp。然后就可以用以下方式调用Flex中的方法。
<SCRIPT language='JavaScript' charset='utf-8'>
    function callApp() {
        var x = MyFlexApp.myFlexFunction();
        alert(x);
    }
</SCRIPT>
<button onclick="callApp()">Call App</button>



二、在Flex中调用 JavaScript
你可以调用Html页面中的JavaScript,通过与JavaScript的交互,可以改变Style,调用远程方法。还可以将数据传递给Html页面,处理后再返回给Flex,完成这样的功能主要有两种方法:ExternalInterface()和navigateToUrl()。
在Flex中调用JavaScript最简单的方法是使用ExternalInterface(),可以使用此API调用任意JavaScript,传递参数,获得返回值,如果调用失败,Flex抛出一个异常。
ExternalInterface封装了对浏览器支持的检查,可以用available属性来查看。
ExternalInterface的使用非常简单,语法如下:
flash.external.ExternalInterface.call(function_name: String[, arg1, ...]):Object;
参数function_name是要调用的JavaScript的函数名,后面的参数是JavaScript需要的参数。
举个例子说明如何调用JavaScript函数
Flex应用中,添加如下方法:
<mx:Script>
<?xml version="1.0" encoding="iso-8859-1"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        import flash.external.*;
  
        public function callWrapper():void {
            var f:String = "changeDocumentTitle";
            var m:String = ExternalInterface.call(f,"New Title");
            trace(m);
        }
    </mx:Script>
    <mx:Button label="Change Document Title" click="callWrapper()"/>
</mx:Application>
Html页面中有如下函数定义:
<SCRIPT LANGUAGE="JavaScript">
    function changeDocumentTitle(a) {
        window.document.title=a;
        return "successful";
    }
</SCRIPT>一、在JavaScript中调用Flex方法
在Flex中可以用ExternalInterface来调用Flex的方法,途径是通过在Flex应用可调用方法列表中添加指定的公用方法。在Flex应用中通过调用addCallback()可以把一个方法添加到此列表中。addCallback将一个ActionScript的方法注册为一个JavaScript和VBScript可以调用的方法。
addCallback()函数的定义如下:
addCallback(function_name:String, closure:Function):void
function_name参数就是在Html页面中脚本调用的方法名。closure参数是要调用的本地方法,这个参数可以是一个方法也可以是对象实例。

举个例子:
<mx:Script>
    import flash.external.*;
    public function myFunc():Number {
        return 42;
    }
    public function initApp():void {
        ExternalInterface.addCallback("myFlexFunction",myFunc);
    }
</mx:Script>
那么在Html页面中,先获得SWF对象的引用,也就是用<object .../>声明的Swf的Id属性,比如说是MyFlexApp。然后就可以用以下方式调用Flex中的方法。
<SCRIPT language='JavaScript' charset='utf-8'>
    function callApp() {
        var x = MyFlexApp.myFlexFunction();
        alert(x);
    }
</SCRIPT>
<button onclick="callApp()">Call App</button>



二、在Flex中调用 JavaScript
你可以调用Html页面中的JavaScript,通过与JavaScript的交互,可以改变Style,调用远程方法。还可以将数据传递给Html页面,处理后再返回给Flex,完成这样的功能主要有两种方法:ExternalInterface()和navigateToUrl()。
在Flex中调用JavaScript最简单的方法是使用ExternalInterface(),可以使用此API调用任意JavaScript,传递参数,获得返回值,如果调用失败,Flex抛出一个异常。
ExternalInterface封装了对浏览器支持的检查,可以用available属性来查看。
ExternalInterface的使用非常简单,语法如下:
flash.external.ExternalInterface.call(function_name: String[, arg1, ...]):Object;
参数function_name是要调用的JavaScript的函数名,后面的参数是JavaScript需要的参数。
举个例子说明如何调用JavaScript函数
Flex应用中,添加如下方法:
<mx:Script>
<?xml version="1.0" encoding="iso-8859-1"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        import flash.external.*;
  
        public function callWrapper():void {
            var f:String = "changeDocumentTitle";
            var m:String = ExternalInterface.call(f,"New Title");
            trace(m);
        }
    </mx:Script>
    <mx:Button label="Change Document Title" click="callWrapper()"/>
</mx:Application>
Html页面中有如下函数定义:
<SCRIPT LANGUAGE="JavaScript">
    function changeDocumentTitle(a) {
        window.document.title=a;
        return "successful";
    }
</SCRIPT>

分享到:
评论

相关推荐

    Flex和JS的相互调用,传参

    标题中的"Flex和JS的相互调用,传参"指的是在Flex应用中调用JavaScript函数,或者在JavaScript中调用Flex组件的方法,并传递参数。这种互操作性是通过Adobe提供的`ExternalInterface`类实现的,它允许Flex和...

    flex—JS相互调用

    ### Flex与JS相互调用详解 #### 一、引言 在混合应用开发中,不同技术栈之间的相互调用是一个常见的需求。例如,在基于Flash的Flex应用中集成JavaScript功能,可以充分利用JavaScript的强大处理能力和Flex丰富的...

    Flex ActiveX通过JS相互调用.rar

    Flex ActiveX 通过JS相互调用是一个常见的技术实践,尤其在需要在Web环境中结合Adobe Flex(一种基于ActionScript的富互联网应用开发框架)与ActiveX控件(主要在Internet Explorer中运行的Windows平台专有技术)...

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

    - 如何在Flex中设置和调用JavaScript函数 - 如何在JavaScript中调用Flex的方法 - 源码示例的详细解释和步骤 - 示例项目"JsFlexApp"的结构和运行方法 对于初学者或者想要提升跨平台交互能力的开发者来说,这样的教程...

    flex与JS实现互相调用

    1. ExternalInterface:这是Flash Player提供的一个API,使得ActionScript能够调用JavaScript函数,同时也允许JavaScript调用Flex中的方法。这个接口在Flex中是公开的,无需额外引入库或设置。 2. CallBack:为了...

    Flex4.5 与js,ocx相互调用

    压缩包中的 "Flex-js-activex-相互调用自己做的实例" 文件很可能是包含了一个实际应用示例,展示了如何实现 Flex 4.5 与 JavaScript 和 OCX 控件的交互。这个实例可能包括一个 Flex 项目,其中定义了与 JS 交互的...

    flex&flash相互调用

    标题中的“flex&flash相互调用”指的是在Adobe Flex和Flash这两个技术之间进行交互的方法。Flex是一种基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA),而Flash则是用于创建动画、图形和交互式...

    Flex与Flash相互调用实例

    通过ExternalInterface,Flash可以调用JavaScript函数,而JavaScript也可以调用Flash中的方法。 在提供的压缩包文件中,包含了两个工程目录:一个为Flash程序,另一个为Flex工程。这表明你需要分别在Flash ...

    flex 和 js 交互

    2. **ExternalInterface**:Flex提供了ExternalInterface类,使得ActionScript能够调用JavaScript函数。首先,你需要在JavaScript中声明要暴露的方法,然后在Flex中通过ExternalInterface.addCallback方法注册这些...

    flex和javascript交互例子

    标题"flex和javascript交互例子"指向了这个主题的核心——如何在Flex应用中调用JavaScript函数,以及反过来在JavaScript中调用Flex的方法。这种技术通常被称为“Bridge”或“跨域通信”。 在Flex中,我们可以使用`...

    Flex与JavaScript的相互通信(真情贡献)

    在Flex中,可以通过`ExternalInterface.call()`方法调用JavaScript函数,参数为JavaScript函数名和传递的参数。 7. **JavaScript调用Flex**: JavaScript可以使用`window['someFlexFunction']`方式调用Flex应用...

    flex与js交互2

    通过`ExternalInterface.call()`方法,Flex可以轻松地执行JavaScript函数并获取其返回值。 ##### 2.1 ExternalInterface.call() 方法 `ExternalInterface.call()` 是一个非常实用的方法,用于在Flex中执行...

    Flex4.6-js修正版,之前一版JS无法调用flex,特此纠正

    - **数据传递**:参数可以通过函数调用传递,JavaScript 和 Flex 之间可以交换字符串、数值、甚至是复杂对象(需序列化)。 2. **参数传递**: - **基本类型**:JavaScript 和 Flex 支持的基本数据类型(如字符串...

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

    3. **调用JavaScript函数**:在Flex中,你可以通过`ExternalInterface.call`方法调用JavaScript函数。例如: ```actionscript var result:Object = ExternalInterface.call("jsFunctionName", "参数1", "参数2"); ...

    flex 和 javascript 测通

    当在Flex中调用JavaScript函数时,这个调用会被转换为Flash Player的消息,然后由Player传递给宿主浏览器,再由浏览器执行相应的JavaScript代码。 4. **JavaScript到Flex的通信**:JavaScript可以通过调用...

    flex和javascript交互

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

    js调用flex实例

    JavaScript(简称JS)和Adobe Flex都是在Web开发中常见的技术,它们各自有着不同的应用场景和优势。Flex是一款基于ActionScript和MXML的框架,用于构建富互联网应用程序(RIA),而JavaScript则是一种广泛使用的...

    flex与JS交互示例

    1. **ExternalInterface**: 这是Flex提供的一种API,允许ActionScript代码调用JavaScript函数,同时也允许JavaScript调用Flex组件的方法。在使用ExternalInterface之前,需要确保在Flex应用中启用它,这可以通过在...

Global site tag (gtag.js) - Google Analytics