[Flex]打造属于自己的Apollo(二)

呵呵,难得大家对这篇文章感兴趣。今天我就跟大家讨论一下Flex+CSharp这种架构具体的实现办法。
1、开发环境准备。
上一篇我已经说明了,开发环境是vs2005+Flex2,也就是说,你的机器中需要安装这两个工具或者其SDK,并且你的电脑的Flash Player的版本必须在9以上。
2、在VS2005中引入fldbg9.ocx这个COM组件。
      引入过程如图所示:
      链接已失效!
      如果您引入的这个com组件没有被注册过。
     
      您还需要在windows→开始→运行里面输入如下的语句进行注册这个com组件。

      语句如下:
      regsvr32 c:\windows\system32\macromed\flasfldbg9.ocx

如果以上的准备工作都OK了,那也就是说开发环境已经完成。下面我来说明一下Flex和C#之间进行通讯。

1、Flex端代码编写:
      首先建立一个新的project,我命名为Desktop.mxml(关于如何建立一个新的project不是本篇文章讨论的内容,请各位见谅)并在这个Application中加入一个button和一个Label,代码如下:
     
      其中画红线的部分就是关于Flex对C#通讯的代码。而lblTest.text接受的是从C#端返回的参数。以上Flex端就准备完成了。
2、C#端代码编写:
      由于上面的准备工作已经完成,所以在C#端就可以直接编写代码了。首先需要using
      刚才咱们加入的一个com组件—AxShockwaveFlashObjects。在C#端加入一个button和2个TextBox控件。并且在Form Load的时候加入刚才引入的com组件的一些内容,比如LoadMovie的地址和注册一个监听事件,以便监听从Flex端传来的消息。代码如下:
    
    
     添加完监听时间后,还需要具体实现这个监听时间的方法,代码如下:
    
     其中上面红色的框写的就是从Flex端传送过来的消息/参数,下面的红色框是给Flex端返回一个消息。
     然后bulid这个project并run这个exe就会得到以下的画面:
    
     当我点击上面的那个button,即Flex中的button就会是Flex向C#传递消息,由于在C#中我在Form Load中写的监听事件,所以当这个exe运行的时候,这个监听时间就已经开始监听来自Flex端的消息了。一旦监听到来自Flex端的消息(Flex端的消息是由点击button调用ExternalInterface.call这个函数形成的)就会触发这个监听事件,即调用flashControl_FlashCall这个函数。并执行其中的代码,最后在由这个函数SetReturnValue返回给Flex端的一个消息。这样一个完成的消息传递→接受→返回的过程就完成了。

最终效果如下:

:-) 是不是很简单啊,其实说明白了就是这么简单。这不过是个最基本的sample,大家还可以对上面这个例子进行扩展,例如在监听和调用这个事件的函数里面写丰富一下内容,比如可以写上调用外部exe的代码,这样就能够做到在flex调用windows的exe的功能了。
调用exe的代码如下:
Process process = new Process();
process.StartInfo.FileName = “调用的exe的路径";
process.Start();

以上就是Kenshin写的Flex端向C#端传递参数并返回c#端的结果的例子,今天就写到这里吧。谢谢大家对这篇文章的关注。下一篇文章我会告诉大家在C#如何传递参数到Flex端。