打造属于自己的Apollo(二)

具体请看这里→http://www.k-zone.cn/zblog/post/log-2006-11-21-001.html

呵呵,难得大家对这篇文章感兴趣。今天我就跟大家讨论一下Flex+CSharp这种架构具体的实现办法。
1、 开发环境准备。
在上一篇我已经说明了,开发环境是vs2005+Flex2,也就是说,你的机器中需要安装这两个工具或者其SDK,并且你的机器的FlashPlayer的版本必须在9以上。
2、 在vs2005中引入fldbg9.ocx这个COM组件。
引入过程如图所示:
点击看大图
点击看大图
   如果您引入的这个com组件没有被注册过。
   点击看大图
您还需要在windows→开始→运行里面输入如下的语句进行注册这个com组件。
语句如下:
regsvr32 c:\windows\system32\macromed\flasfldbg9.ocx
如果以上的准备工作都ok了,那也就是说开发环境已经完成。下面我来说明一下Flex和C#之间进行通讯。
1Flex端代码编写:
   首先建立一个新的project,我命名为Desktop.mxml(关于如何建立一个新的project不是本篇文章讨论的内容,请各位见谅)并在这个Application中加入一个button和一个Label,代码如下:
点击看大图
其中画红线的部分就是关于Flex对C#通讯的代码。而lblTest.text接受的是从C#端返回的参数。以上Flex端就准备完成了。
2C#端代码编写:
   由于上面的准备工作已经完成,所以在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端。

posted on 2006-12-05 18:43  kenshin  阅读(384)  评论(0编辑  收藏  举报

导航