`

[心得教程] Flex与 JS 交互通信方法

    博客分类:
  • flex
 
阅读更多
心得教程类型:

 

navigateToURL() 可以用来打开一个新的浏览器窗口,也可以用来flex和js之间的通信。比如:
打开一个新窗口:
   var url:URLRequest = new URLRequest(http://blog.csdn.net);
   navigateToURL(url, _blank);
这个函数也可以用来执行js,例如:
   var url:URLRequest = new URLRequest(“javascript:window.close()”); 或者:
   var urlLURLRequest = new URLRequest(“javascript:myFun(para1…paran)”)
   myFun()函数是html页面的script部分定义的,函数参数一定要有引号!
   navigateToURL(url, _self);
也可以用来发送email:
   var urlURLRequest = new URLRequest(mailto:xxx@hotmail.com);
   navigateToURL(url, _blank);

//------------------------------------------------------------------------------------

internal function initApp():void   {
      var str:String = "<a target='_blank' href='...'>message here</a>";
      link.htmlText = str;
    }
internal function openUrl():void   {
      navigateToURL(new URLRequest("..."), "_blank");
    }<mx:Button x="72" y="117" label="message" fontSize="13" id="link2" click="openUrl()"/>


JS与Flex交互的几点注意事项

一,在Flex中,addCallack所输出供给JS调用的函数名称不能与JS中己有的函数名称相重复,如下所示:
ExternalInterface.addCallback("play",callThis);
上面这一句在IE中就发生错误,因为“play”这个函数名称已经被分配给DOM元素了,改一个名字就可以了,如下就正确了。

ExternalInterface.addCallback("MyPlay",callThis);
二,在向页面中嵌入swf文件时,要用Adobe的官方JS文件或者版本为2.+的SWFOBJECT。
Adobe的官方JS文件就是AC_OETags.js文件,如果你用的是Flex SDK,可以在Flex SDK安装目录下的templates文件夹中找。在用AC_OETags.js文件时,请把下面这段代码加入到页面中:

function getMovie(movieName){    if (navigator.appName.indexOf("Microsoft")!=-1){    return window[movieName];    } else {    return document[movieName];    }}
用下面的代码调用Flex中的命令:

getMovie('MyFlex').MyPlay();
如果使用的是SWFOBJECT,请使用2.0或2.0以上的版本,使用方法可以查看《翻译:SWFOBJECT 2.0官方文档》,然后使用如下语句调用Flex中的命令:

swfobject.getObjectById("MyFlex").MyPlay();
三,Flex中调用“init()”语句的命令最好放在“applicationComplete”中。
因为有时JS调用Flex的命令中需要用到Flex的组件做出反应,如果用creationComplete 调用“init()”有可能会发错,所以最好是用applicationComplete。creationComplete是在组件定义完成并已经在显示列表时触发,而applicationComplete是在所有的组件初始化完成并显示时触发。
四,注意页面文件编码格式即文件的encoding类型,这个本来不算问题的,但却让我碰到了,文件编码格式不对称有时在IE中显示不了内容。  一、在JavaScript中调用Flex方法在Flex中可以用ExternalInterface来调用Flex的方法,途径是1.通过在Flex应用可调用方法列表中添加指定的公用方法。在Flex应用中通过调用addCallback()可以把一个方法添加到此列表中。addCallback将一个ActionScript的方法注册为一个JavaScript和VBScript可以调用的方法。addCallback()函数的定义如下:addCallback(function_name:String, closure:Function):voidfunction_name参数就是在Html页面中脚本调用的方法名。closure参数是要调用的本地方法,这个参数可以是一个方法也可以是对象实例。举个例子:<mx:Script>     import flash.external.*;     public function myFunc():Number {         return 42;     }     public function initApp():void {         ExternalInterface.addCallback("myFlexFunction",myFunc);     }</mx:Script>2.那么在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>
    分享到:
    评论

    相关推荐

      一个使用Androidstudio开发的校园通知APP

      一个使用AndroidStudio开发的校园通知APP,支持注册登录,支持聊天,后端技术:http get post 方法(分别有json数据格式和form数据格式),websocket长连接,用于接收消息,mqtt协议用于查看数据。

      基于粒子群的ieee30节点优化、配电网有功-无功优化 软件:Matlab+Matpowre 介绍:对配电网中有功-无功协调优化调度展开研究,通过对光伏电源、储能装置、无功电源和变压器分接头等设备协调

      基于粒子群的ieee30节点优化、配电网有功-无功优化 软件:Matlab+Matpowre 介绍:对配电网中有功-无功协调优化调度展开研究,通过对光伏电源、储能装置、无功电源和变压器分接头等设备协调控制,以实现光伏利用率最大、网络损耗最小、电压质量最优的综合优化目标。 采用粒子群算法寻求最优解,得到配电网的调控策略,从而制定合理的优化运行方案。 最后通过算例分析,说明其合理性。 Matpowre(需要Matpowre请安装不然会有错)

      C#自定义事件 2024年12月23日

      通过自定义事件来传值。此种方法适合于写驱动程序。进行数据采集。 对于一般的系统事件,是有两个参数的,一个是sender,一个是EventArgs,对于sender,个事件的触发者,一般指向的是一个控件,但是对于EventArgs,一般常用来传递鼠标位置等信息,下面就自定义事件传值就是通过EventArgs来实现。 通过EventArgs来实现传值,我们首先需要创建一个类,继承EventArgs,我们可以将需要传递的数据,直接在类里面定义成属性,这里以传递一个布尔(没有再最终的代码内使用)、一个浮点数,一个字符串为例,

      基于校园的互帮互助社交APP全部资料+详细文档+高分项目.zip

      【资源说明】 基于校园的互帮互助社交APP全部资料+详细文档+高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

      Download usage

      Download usage

      基于高德地图的校园导航全部资料+详细文档+高分项目.zip

      【资源说明】 基于高德地图的校园导航全部资料+详细文档+高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

      健康中国2030框架下智慧医药医疗博览会方案

      内容概要:本文介绍了 2020 京东健康智慧医药医疗博览会在湖南长沙举办的总体方案。该方案详细描述了展会的背景、目标、组织机构、展区规模和内容、主体活动、拟邀嘉宾及宣传媒体等内容。展会旨在展示互联网+医疗健康生态下的新技术、新产品和新方案,推动智慧医疗产业链的数据化、信息化和智慧化建设,为健康中国战略和健康湖南行动贡献力量。 适合人群:医疗行业的从业人员、智慧医疗技术开发者、政府相关部门、健康产业投资人等。 使用场景及目标:① 通过展会展示先进的医药医疗技术和产品,促进技术交流与合作;② 推动智慧医疗产业发展,助力健康中国战略和健康湖南行动的实施;③ 提高人民群众的健康水平和医疗服务质量。 其他说明:此次展会将设置十大展区,涵盖健康管理、智慧医院、精准医疗、智能穿戴、移动医疗系统、智能养老等多个方面,同期还将举办多场论坛和商务活动。

      qt开发类似于网盘的项目

      C/S架构,C++开发的,使用UDP协议

      2023-04-06-项目笔记 - 第三百五十六阶段 - 4.4.2.354全局变量的作用域-354 -2025.12.23

      2023-04-06-项目笔记-第三百五十六阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.354局变量的作用域_354- 2024-12-23

      基于Bmob后台搭建的一块校园社区类APP,内置二手交易模块全部资料+详细文档+高分项目.zip

      【资源说明】 基于Bmob后台搭建的一块校园社区类APP,内置二手交易模块全部资料+详细文档+高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

      高校学生求职就业平台(编号:24440246).zip

      高校学生求职就业平台(编号:24440246).zip

      Python与Pygame实现带特效的圣诞节场景模拟程序

      内容概要:本文详细介绍如何使用Python结合Pygame库制作一个充满圣诞气息的应用程序。该程序包括生成雪花、圣诞树以及闪烁星星的效果,并配以背景音乐以增加节日气氛。通过具体的代码示例,指导读者逐步构建这一有趣的项目。 适用人群:对于有兴趣探索Pygame图形库及游戏开发的基础开发者、编程初学者。 使用场景及目标:① 初步掌握Pygame的基本用法及其常见图形绘制方法;② 学习如何通过编程手段营造节日氛围;③ 作为个人项目或课堂作业的优秀实践。 其他说明:除了文中提供的基础功能外,鼓励读者在此基础上发挥创意,加入更多有趣的功能,比如动态改变场景中的物体、响应用户输入等,从而创造出独一无二的作品。

      计算机程序设计员三级(选择题)

      计算机程序设计员三级(选择题)

      基于Spring Boot的养老院管理系统的设计与实现_6575f5w2_223-wx(1).zip

      基于Spring Boot的养老院管理系统的设计与实现_6575f5w2_223-wx(1).zip

      数据结构排序算法:插入排序、希尔排序、冒泡排序及快速排序算法

      数据结构

      (42757812)0.96寸OLED显示屏STC8A8K64S4A12-IIC-例程

      内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

      基于java的网上订餐系统(编号:96717170).zip

      基于java的网上订餐系统(编号:96717170).zip

      基于Java WEB旅游门票信息系统设计与实现_70rn7486_206-wx.zip

      基于Java WEB旅游门票信息系统设计与实现_70rn7486_206-wx.zip

      ST官方电机库FOC算法

      无刷电机永磁同步电机库,有感控制,无感控制库

      2024年超融合网络架构研究与实践报告.pdf

      2024年超融合网络架构研究与实践报告.pdf

    Global site tag (gtag.js) - Google Analytics