您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页JS调用Flex中的方法

JS调用Flex中的方法

来源:筏尚旅游网
Jsp中嵌入Flex,通过js传植 博客分类: FLEX jspflexjs

新工作的第一个任务,实现jsp向flex传值.都是从网上参考,实现的,例子如下:

JSP代码:

Java代码

\">

My JSP 'MyJsp.jsp' starting page

This is my JSP page.

name:

codebase=\"http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab\">

pluginspage=\"http://www.adobe.com/go/getflashplayer\">

\">

My JSP 'MyJsp.jsp' starting page

This is my JSP page.

name:

注意:object中的classid必须要,我开始没有写,在这里耽误好好久.

JS代码:

Java代码 function deliverData(){

var flashPlay = document.getElementById(\"flex\");

flashPlay.getData(document.getElementById(\"name\").value); }

function deliverData(){ var flashPlay = document.getElementById(\"flex\"); flashPlay.getData(document.getElementById(\"name\").value); }

FLEX代码:

Java代码

import mx.controls.Alert; private function init():void{

ExternalInterface.addCallback(\"getData\ }

private function testFunction(param:String):void{

text.text = \"你输入的是:\"+param; }

protected function btn_clickHandler(event:MouseEvent):void {

text.text = \"重新输入\"; } ]]>

js调用Flex中的方法,向flex中传参,flex调用js 2013-04-17 17:27 1601人阅读 评论(0) 收藏 举报

首先,有了一个swf文件,test.swf,同时也有一个自动生成的html文件,test.html。 然后,在另外一个文件,test.jsp中,通过iframe,引入了test.html,即引入了swf。

现在想要在test.jsp中,向flex传参,并调用flex中的方法,我采用的方法是:

首先,在jsp中写一个调用flex的方法,如下 function initSWF(){

//得到swf的object

var obj = window.frames[\"rightframe\"].ReverseQuery; //rightframe是iframe的名字,ReverseQuery是在test.html中,引入swf做object的id。 //调用它的方法

var start = \"<%=startPoint%>\"; var end = \"<%=endPoint%>\";

obj.showParams(start,end); }

在html中,有方法

/*在flex中只能调用本页面的js方法*/ function initSWF(){ parent.initSWF(); }

在flex,有如下方法:

public function showParams(start:String,end:String):void{ Alert.show(start); Alert.show(end); }

这时,需要建立一个打开他们之间通信的桥梁了,在flex的初始化时,要使用

ExternalInterface.addCallback(\"showParams\ //前者是它暴露给js的方法名,后者是它在flex中的方法名。

这样,理论上就可以实现调用了。将initSWF方法放在页面的onload方法中即可实现。

但是产生一个问题,如果flex在页面中没有加载成功时,会报找不到对象的错误。因此,需要我们在确保swf文件加载完成后,再调用swf中的方法。

但监听它加载完成显然有点浪费感情,于是,我们采用的策略是,等它加载完,再调用js的initSWF方法,即可将环节全部打通。

因此,在flex的初始化时,加入 //调用载入页面的initSWF方法

ExternalInterface.call(\"initSWF\"); //要将它放在注册对外方法之后进行。

大功告成。

有需要注意的地方:

在flex当中调用js的方法,这个方法只能写在引入swf的文件中,但我在jsp中引入了html,所以只能是在html中的js,是调用父页面的js方法。

而在jsp中对于swf文件的引用,要借助window.frames[\"rightframe\"]

Flex与JavaScript之间的交互 博客分类: Flex3

JavaScriptFlexAdobeXMLHTML 一、mxml文件中的源码

Xml代码

private function init():void{

if(ExternalInterface.available){

//将AS方法注册为JS可以调用的方法

ExternalInterface.addCallback(\"flexMethod\ } }

public function flexMethod(s:String):void{ txt1.text = s; }

private function callJavaScriptMethod():void{ if(ExternalInterface.available){

//在AS中调用JS的方法

ExternalInterface.call(\"jsMethod\

//ExternalInterface.call(\"window.location.reload\"); } } ]]>

]]>

//将AS方法注册为JS可以调用的方法 ExternalInterface.addCallback(\"flexMethod\ } }

public function flexMethod(s:String):void{ txt1.text = s; }

private function callJavaScriptMethod():void{ if(ExternalInterface.available){ //在AS中调用JS的方法 ExternalInterface.call(\"jsMethod\ //ExternalInterface.call(\"window.location.reload\"); } }

二、在/html-template/index.template.html模板文件中添加以下代码: Html代码

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务