(转)Flex与JavaScript的交互:调用JavaScipt或者被JavaScript调用

标签: flex javascript javascipt | 发表时间:2013-06-21 12:44 | 作者:
出处:http://jackyrong.iteye.com
一、在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>

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [flex javascript javascipt] 推荐:

(转)Flex与JavaScript的交互:调用JavaScipt或者被JavaScript调用

- - jackyrong
一、在JavaScript中调用Flex方法. 在Flex中可以用ExternalInterface来调用Flex的方法,途径是通过在Flex应用可调用方法列表中添加指定的公用方法. 在Flex应用中通过调用addCallback()可以把一个方法添加到此列表中. addCallback将一个ActionScript的方法注册为一个JavaScript和VBScript可以调用的方法.

Javascipt脚本调试(Javascript debugging)

- - 博客园_首页
根据 CNZZ数据中心对国内主流浏览器的统计分析,2012年3月国产浏览器中360安全浏览器、搜狗高速浏览器和傲游浏览器的使用率分别为24.39%、7.37%、1.75%;国外浏览器中微软IE浏览器、谷歌Chrome浏览器及苹果Safari浏览器的使用率分别为53.40%、3.21%、2.22%.

Flash与Flex路在何方?

- chris - 伯乐在线 -博客
  注:本文转载自InfoQ - 张龙.   Adobe想要强化Flash与Flex在企业,特别是在移动领域中的地位. 但最近的一项调研表明jQuery已经超越了Flash,成为前17,000个网站首选的Web部署解决方案.   近日,来自Adobe Systems开发工具事业部的产品经理Andrew Shorten在Adobe的官方博客上发表了一篇博文,谈到了Flash与Flex的当前状态,并就Adobe的旗舰平台给出了自己的一些看法.

移动端flex布局实战

- -
做过移动端的同学都知道移动端布局太难了,终端太多了,传统的布局方式已经力不从心,各种新的布局方式被发明. 在flex之前,传统布局有流式布局(就是默认的方式),绝对定位布局,弹性布局(em),和浮动布局,其中浮动布局并不是为布局而设计的,使用起来略显繁琐. 2009年,对前端来说是不平凡的一年,html5定稿,es5.1发布,flex应运而生,天生响应式,生而为布局,使用及其简单.

写编译器:学习GNU Flex,写一个词法分析器

- zffl - Xiaoxia[PG]
以下内容仅为个人学习笔记,非正规教程,难免有疏漏之处,请指出. 目标要分析词法的对象是一种叫TINY+的计算机语言. char str; int x, fact; str:= 'sample program in TINY+ language- computes factorial'; read x; if x>0 and x<100 then {don’t compute if x<=0}.

Java与Flex学习笔记----用CSS控制页面样式

- - BlogJava-首页技术区
以前对于Flex网页布局还不是很明白,基本上没有什么修饰. 但是做完了一个仿“115网盘”的页面后,对页面控制有了一个基本的了解,现总结一下.      本人一开始接触的就是Flex4,据说Flex3的css布局很脊椎,也不知道是不是这样. 但是Flex4的网页布局很牛X,再配上各种事件,可以实现需要写很多JavaScript/Ajax代码才能实现的效果.

跨平台工具详解之二:Adobe Air/Flex

- - Web App Trend
Adobe位于CaliforniaSan Jose,成立于1982年. Adobe在NASDAQ上市,拥有1万名左右的员工,仅2011年一年的税收超过40亿美金. Adobe的核心业务是开发出专业的设计创意工具,比如,Photoshop和Dreamweaver,数字化演示解决方案,包括Acrobat PDF和Flash,其中Flash是由Adobe收购Macromedia而来.

Flex与java通过BlazeDS实现通信(简单Demo)

- - CSDN博客推荐文章
因为对于flex本人也是新手,此前按照网上的各种方法进行试验,都没能实现flex与java的通信. 也许是eclipse和tomcat版本的问题. 后来经过几天的尝试,终于成功了. 现和大家分享一下,希望和我一样曾经饱受困扰的同胞们,能够根据我的Demo,配置成功. 2、Myeclipse 8.5 (或以上版本).

Adobe 声明对Flex的态度及日后的承诺

- - ITeye资讯频道
去年11月份, Adobe宣布贡献出Flex SDK代码,并与该项目基金会一道将Flex SDK捐献给一家新设的开源基金会. 今天, Adobe关于对Flex的态度及日后的承诺作出声明,总结如下:. Flex归Apache,社区模式管理,Adobe派工程师团队参与;. 在企业级开发领域,Flex至少在未来几年内仍占据优势;.