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应用的根是SystemManger,它是flash.display.MovieClip的子类,一个Flash Player显示对象类型。SystemManager有两个帧,第一帧是用来显示应用载入的进度指示,这个帧是轻量的,所以它几乎能立即下载和运行。第二帧便是应用本身。当一个Flex应用的SystemManager实例进入到第二帧,它创建一个主应用的实例。SystemManager ......
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2007/08/07/creating-full-screen-flex-applications/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" applicationComplete="init(event)" viewSourceURL="srcview/index.html">
& ......
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">
<mx:Panel width="392" height="300" layout="absolute">
<mx:Label x="19" y="10" text="{user}" width="171" height="20"/>
<mx ......
今天突发奇想,想试一试Flex的保存功能,知道FileReference这个类里面直接就有save方法,API也说的很清楚,可是FB里面死活就是找不到这个方法,无奈上网一找才发现原来这个功能是Flash10的功能,而我的FB的默认配置是Flash9,具体修改方法:点项目属性->FLex Compiler->Requiment Flash Player Version改为10.0.0就可 ......