Flex通信篇——Flex和外部应用程序进行通信
Flash To EXE
Flex端
Flex创建一个Flex Project命名为Demo1,类型选Web application(runs in Flash Player)
在Demo1.mxml上添加一个按钮,并未按钮添加点击事件
private function ButtonClick(event:MouseEvent):void
{
//调用外部程序SayHello方法,并传入方法参数"Hunk",输出方法返回值result
if (!ExternalInterface.available) return ;
var result:String = ExternalInterface.call("SayHello", "Hunk");
trace(result);
}
EXE端
VS2008创建window应用程序项目
打开默认的窗体,向窗体添加ShockwaveFlashObject控件
向窗体添加下面代码,为ShockwaveFlashObject控件注册FlashCall事件接收Flash发送过来的请求
protected override void OnLoad(EventArgs e)
{
if (m_Init) return;
m_Init = true;
string swfPath = Path.Combine(Application.StartupPath, ConfigurationManager.AppSettings["SwfPath"]);
if (System.IO.File.Exists(swfPath))
{
axShockwaveFlash1.FlashCall += new AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEventHandler(axShockwaveFlash1_FlashCall);
//通过配置文件加载Demo1.swf
axShockwaveFlash1.Movie = System.IO.Path.Combine(Application.StartupPath, swfPath);
}
}
private void axShockwaveFlash1_FlashCall(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEvent e)
{
try
{
//当点击Demo1.swf的按钮时,该方法就会被触发,这里需要解析swf发送过来的xml请求信息
//e.request格式
//<invoke name="SayHello" returntype="xml"><arguments><string>Hunk</string><
相关文档:
<?xml version="1.0" encoding="utf-8"?>
<!-- Simple example to demonstrate the DateTimeAxis class. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
import mx.collections.ArrayCollection;
......
今天做Flex时碰到flex和java交互的乱码问题,使用HTTPService无论是从Flex端传到Java端,还是反过来都乱码。调查了半天,终于搞定了。
以下是解决方案:
1.Flex端传到Java端
Flex端:encodeURIComponent(comment.text)
使用encodeURIComponent把参数转换为 application/x-www ......
<?xml version="1.0" encoding="utf-8"?>
<mx:Application fontSize="12" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
public var treeXml: XML = <nodes name="所有">
&n ......
自定义类(BroadCastMarquee.as):
package marquee
{
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.text.TextFiel ......
<?xml version=
"1.0"
encoding=
"utf-8"
?>
<mx:Application xmlns:mx=
"http://www.adobe.com/2006/mxml"
xmlns:assql=
"com.maclema.mysql.mxml.*"
& ......