[原]client通过ActiveX与flash交互方法简介
2010-09-29 18:48
204 查看
client要与flash交互,只要使用以下3个函数:
HRESULT CallFunction([in] BSTR request, [out, retval] BSTR* response);
HRESULT SetReturnValue([in] BSTR returnValue);
void FlashCall([in] BSTR request);
CallFunction和SetReturnValue是IShockwaveFlash接口中定义的。
FlashCall是_IShockwaveFlashEvents接口中定义的。
CallFunction
CallFunction的作用是由client调用flash中函数,request参数是一个xml,包含了要调用的函数名和参数,response是flash函数的返回值,也是同样格式的xml。
FlashCall
_IShockwaveFlashEvents是一个连接点,当flash调用client时,就会调用此接口中的FlashCall。参数request和CallFunction中的request一样,也是一个xml,包含函数名和参数。
SetReturnValue
FlashCall是没有返回值的,那么当client通过FlashCall被调用时,如何返回某些数据呢,就通过SetReturnValue函数。SetReturnValue的参数returnValue同样是个xml,但只是request格式xml的一个节点。
xml格式
xml格式如下:
<invoke name="foo" returntype="xml">
<arguments>
<number>10</number>
<string>hello flash</string>
</arguments>
</invoke>
invoke节点是根节点,name属性是要调用的函数名returntype属性必须为"xml"。
arguments下是参数列表,这个例子中是一个number型参数和一个string型参数。
CallFunction和FlashCall的参数都是这种格式的xml,但SetReturnValue的参数只是arguments下面一个子节点,例如"<number>10</number>"。
flash支持的参数类型
flash支持的参数类型如下:
这里要注意,flash穿出的参数不区分整型和符点型,因此需要自己对number类型做判断,比如可以查找如果value中包含'.',就说明是符点型。
HRESULT CallFunction([in] BSTR request, [out, retval] BSTR* response);
HRESULT SetReturnValue([in] BSTR returnValue);
void FlashCall([in] BSTR request);
CallFunction和SetReturnValue是IShockwaveFlash接口中定义的。
FlashCall是_IShockwaveFlashEvents接口中定义的。
CallFunction
CallFunction的作用是由client调用flash中函数,request参数是一个xml,包含了要调用的函数名和参数,response是flash函数的返回值,也是同样格式的xml。
FlashCall
_IShockwaveFlashEvents是一个连接点,当flash调用client时,就会调用此接口中的FlashCall。参数request和CallFunction中的request一样,也是一个xml,包含函数名和参数。
SetReturnValue
FlashCall是没有返回值的,那么当client通过FlashCall被调用时,如何返回某些数据呢,就通过SetReturnValue函数。SetReturnValue的参数returnValue同样是个xml,但只是request格式xml的一个节点。
xml格式
xml格式如下:
<invoke name="foo" returntype="xml">
<arguments>
<number>10</number>
<string>hello flash</string>
</arguments>
</invoke>
invoke节点是根节点,name属性是要调用的函数名returntype属性必须为"xml"。
arguments下是参数列表,这个例子中是一个number型参数和一个string型参数。
CallFunction和FlashCall的参数都是这种格式的xml,但SetReturnValue的参数只是arguments下面一个子节点,例如"<number>10</number>"。
flash支持的参数类型
flash支持的参数类型如下:
AS class/value | c++ class/value | format | comments |
null | NULL | <null/> | |
Boolean true | bool true | <true/> | |
Boolean false | bool false | <falsh/> | |
String | BSTR | <string>string value</string> | |
Number | int/double | <number>-12</number> <number>3.14</number> | |
Array(元素可以是混合类型) | 允许混合类型元 素的集合,如vector<VARIANT> | <array> <property id="0"> <number>3.14</number> </property> <property id="2"> <string>string value</string> </property> ... </array> | property 节点定义各个元素,而 id 属性为从 0 开始的数值索引。 |
Object | 含有字符串键和 对象值的字典, 如map<string, VARIANT> | <object> <property id="name"> <string>John Doe</string> </property> <property id="age"> <string>33</string> </property> ... </object> | property 节点定义各个属性,而 id 属性为属性名称(字符串)。 |
其它内置或自定义的类 | <null/> 或 <object></object> | ActionScript 将其它对象编码为 null 或空对象。不管是哪种情况,所有属性值都会丢失。 |
相关文章推荐
- [原]client通过ActiveX与flash交互方法简介
- HttpComponents(Apache HttpComponents Client 4.1.3)通过代理访问网页的设置方法
- VC++开发的ActiveX如何通过JavaScript脚本和EOS应用交互
- flash与js交互方法
- JAVA通过HttpClient发送HTTP请求的方法示例
- flash和js通过什么类如何交互
- 通过Flash和c++的交互来实现自己的桌面游戏
- 一个Flash中通过AS3代码的Loader对象加载另一个SWF文件,并访问其中的文档类中的方法。
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- flash和js通过什么类如何交互?
- 通过Flash和c++的交互来实现自己的桌面游戏
- Androidclient和server端数据交互的第一种方法
- 【JAVA】通过HttpClient发送HTTP请求的方法
- Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)
- SilverLight浏览器交互之:Html页面通过Javascript调用SilverLight程序内方法(附源码)
- iOS之通过PaintCode快速实现交互动画的最方便方法 未解问题
- mqtt-client回调方法简介
- Linux下通过SSH快速的和本地进行文件的交互的方法
- Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
- 通过CCS烧写FLASH的方法