Flex 与 Js 的交互,两个Flex工程之间的交互
2011-10-08 18:38
369 查看
做项目的时候,需要实现FTP上传的功能,项目本身是使用SDK3.2,而FTP上传需要用到SDK4.0以上的版本,于是就另外搭建了一个工程来实现这个功能。
如果仅仅是Flex和JavaScript进行交互,可以使用ExternalInterface:
1.Flex调用Js中的方法,直接ExternalInterface.call("methodName");
2.Js调用Flex中的方法,首先在Flex中注册这些方法 ExternalInterface.callBack("callForJS", methodInFlex),然后在Js中获得flash对象,再调用 flash.callForJS();
如果是两个Flex工程交互,还可以使用LocalConnection,在projectA中调用设置conn.client = this,再调用connect("connctionName")方法,在projectB中调用send("connectionName", "methodNameInProjectA", ...params)方法,非常简单。connectionName相当于是一个通道或者是一条路,A和B说好我们都往这儿走,都用这个通道,最后就相遇了。在B中也定义一个connect("connectionName")就可以进行双向通信了。
下面是项目中的一些实例:
1.Flex中的页面调用Js中的方法,打开一个新的IE窗口
2.完成相应操作后,Js调用Flex中的方法,返回操作结果:
js中的代码:
3.两个Flex工程之间的通信
A工程先连接myConnection,不同的模块可以创建不同连接,这样B工程中就可以根据connectionName调用不同模块中的方法
B工程直接连接myConnection,并调用A中的方法
如果仅仅是Flex和JavaScript进行交互,可以使用ExternalInterface:
1.Flex调用Js中的方法,直接ExternalInterface.call("methodName");
2.Js调用Flex中的方法,首先在Flex中注册这些方法 ExternalInterface.callBack("callForJS", methodInFlex),然后在Js中获得flash对象,再调用 flash.callForJS();
如果是两个Flex工程交互,还可以使用LocalConnection,在projectA中调用设置conn.client = this,再调用connect("connctionName")方法,在projectB中调用send("connectionName", "methodNameInProjectA", ...params)方法,非常简单。connectionName相当于是一个通道或者是一条路,A和B说好我们都往这儿走,都用这个通道,最后就相遇了。在B中也定义一个connect("connectionName")就可以进行双向通信了。
下面是项目中的一些实例:
1.Flex中的页面调用Js中的方法,打开一个新的IE窗口
var filePath:String = "TeachingProgress"; //openWindows是js方法,用来打开一个指定大小的窗口 ExternalInterface.call("openWindow", "/edu/web/ftp/fileExplorer.jsp?status=upload&filePath=" + filePath, "上传文件", 180, 500);
function openWindow(url, name, iHeight, iWidth) { var iTop = (window.screen.availHeight-30-iHeight)/2; //获得窗口的垂直位置; var iLeft = (window.screen.availWidth-10-iWidth)/2; //获得窗口的水平位置; win = window.open(url, name, "height="+iHeight+", width="+iWidth+",top="+iTop+",left="+iLeft+", z-look=yes,toolbar=no, menubar=no, scrollbars=yes, resizable=no ,alwaysRaised=yes, location=no, status=no"); win.document.title = name; }
2.完成相应操作后,Js调用Flex中的方法,返回操作结果:
//FTP 监听弹出的上传IE窗口回调事件 ExternalInterface.addCallback("uploadSuccess", uploadSuccess); ExternalInterface.addCallback("deleteFile", deleteFile);
js中的代码:
function uploadSuccess(files) { //get access to the flash player in the page with an ID of YM_FTP var flash = (navigator.appName.indexOf ("Microsoft") !=-1)?window["YM_EDU"]:document["YM_EDU"]; //call the function in flash flash.uploadSuccess(files); }
3.两个Flex工程之间的通信
A工程先连接myConnection,不同的模块可以创建不同连接,这样B工程中就可以根据connectionName调用不同模块中的方法
private var conn:LocalConnection; conn = new LocalConnection(); conn.client = this; try { conn.connect("myConnection"); } catch (error:ArgumentError) { trace("Can't connect...the connection name is already being used by another SWF"); }
B工程直接连接myConnection,并调用A中的方法
private var conn:LocalConnection; conn = new LocalConnection(); conn.send("myConnection", "sayHelloInA", message.text);
相关文章推荐
- Flex与Servlet之间数据的交互
- iOS之oc与html之间的交互(oc中调用js的方法)
- iOS开发中,实现UIWebView,html和js之间的交互
- JS计算两个日期之间的天数
- js和servlet之间用json的数据格式进行交互
- OC与JS之间的交互
- JS与Flex交互的几点注意事项
- android studio 两个app之间的交互
- Android中webview和js之间的交互
- JS计算两个日期之间的天数,时间差计算
- Android中webview和js之间的交互
- 实现两个工程之间跳转
- Flex与JS交互完全攻略
- JS实现两个页面之间的通信
- iOS与Html5和JS之间的交互---学习笔记
- vuejs父子组件之间数据交互详解
- js 获取两个日期之间所有的日期(YYYY-MM-DD)
- PHP与js之间的交互
- 【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!
- android 与JS之间的交互