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><
相关文档:
经常在Demo中会看到列表,表格等方式来显示数据。当然有时候也需要添加数据到这些列表或者表格中。有很多方式提交,这里展示一个弹出窗口的方式来添加新的数据到DataGrid中。
例子展示:
首先,我们开始建设一个基本的界面结构,一个带有“Notes"标题的Panel,一个DataGrid,以及一个用于提交数据的按钮。
Xml代码
& ......
首先注意一下.
这里说的是在"FLEX"生成的"SWF"直接运行时,使用"stage.displayState"启用全屏时所遇到的问题...
注意上面""号所提到的关健词..
现在我们先看看代码,下面的代码装在creationComplete事件中调用init()来启动全屏.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www ......
发现了一个Flex中TextInput的一个比较有用的属性restrict(约束,限定),先看下例子:
1,<mx:TextInput id="test_ti" width="160" maxChars="20" restrict="0-9" text="0"/>
这样,这个输入框最多只能输入20个字符,只能输入0到9之间的数字了,你如果输入别的是输入不进去的
2,<mx:TextInput id="test_ti" width="1 ......
今天做Flex时碰到flex和java交互的乱码问题,使用HTTPService无论是从Flex端传到Java端,还是反过来都乱码。调查了半天,终于搞定了。
以下是解决方案:
1.Flex端传到Java端
Flex端:encodeURIComponent(comment.text)
使用encodeURIComponent把参数转换为 application/x-www ......
自定义类(BroadCastMarquee.as):
package marquee
{
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.text.TextFiel ......