VC,VB,C#与flash8结合开发中callfunction的运用
### VC、VB、C#与Flash 8 结合开发中 CallFunction 的运用 在软件开发领域,特别是多媒体应用开发过程中,结合使用不同的编程语言和技术框架是常见做法之一。本篇文章将详细探讨如何利用Visual C++(简称VC)、Visual Basic(简称VB)以及C#等编程语言与Adobe Flash 8进行集成开发,并特别聚焦于`CallFunction`方法的应用。 #### 一、CallFunction 的概念 `CallFunction` 是一个非常重要的API,它允许我们从外部调用Flash影片中的ActionScript函数。这一特性极大地扩展了Flash与其他编程语言之间的交互能力。通过`CallFunction`,我们可以实现诸如动态参数传递、执行复杂的脚本逻辑等功能。 #### 二、CallFunction 在 VB 中的应用 在VB环境下,我们可以利用`CallFunction`来控制嵌入到VB应用程序中的Flash影片。下面是一个简单的示例: ```vb Private Sub Command1_Click() Flash1.CallFunction "<invoke name=""show"" returntype=""xml""><arguments><string>hello</string><string>world</string></arguments></invoke>" End Sub Private Sub Form_Load() ShockwaveFlash1.LoadMovie 0, App.Path & "\showstring.swf" End Sub ``` 在上述代码中,`LoadMovie` 方法用于加载包含ActionScript的SWF文件,而`CallFunction`则用于调用该SWF文件中的`show`函数,并传递两个字符串参数。在Flash文件内部,`show`函数被定义为: ```as function show(str1:String, str2:String):Void { test_txt.text = str1 + ":" + str2; } ``` 为了使VB能够调用Flash内的函数,还需要注册回调函数: ```as flash.external.ExternalInterface.addCallback("show", this, show); ``` #### 三、CallFunction 在 C++ 和 C# 中的应用 除了VB外,C++ 和 C# 也可以通过类似的方式与Flash进行交互。 ##### 3.1 C++ 示例 在C++环境中,我们可以使用类似的方法来调用Flash中的函数: ```cpp void CALLBACK OnClick(HWND hWnd) { // 加载 SWF 文件 flash1.LoadMovie(0, Application.StartPath + "\\showstring.swf"); // 调用 Flash 内部的函数 flash1.CallFunction("<invoke name=\"test\" returntype=\"xml\"><arguments><string>HelloWorld</string></arguments></invoke>"); } ``` 同样,在Flash文件中,需要定义对应的ActionScript函数并注册回调: ```as function test(result:Object):Void { test_txt.text = result; } flash.external.ExternalInterface.addCallback("test", this, test); ``` ##### 3.2 C# 示例 对于C#,其基本原理相同: ```csharp private void button1_Click(object sender, EventArgs e) { // 加载 SWF 文件 flash1.LoadMovie(0, Application.StartupPath + @"\showstring.swf"); // 调用 Flash 内部的函数 flash1.CallFunction("<invoke name=\"test\" returntype=\"xml\"><arguments><string>HelloWorld</string></arguments></invoke>"); } ``` #### 四、CallFunction 的高级应用 除了基本的函数调用外,`CallFunction` 还支持更复杂的数据类型传递,例如XML对象。这使得我们可以更加灵活地控制Flash中的内容。 ##### 4.1 XML 数据传递 例如,如果需要向Flash文件传递一个XML数据包,可以这样操作: ```vb Dim xmlData As String = "<data><item>Hello</item><item>World</item></data>" Flash1.CallFunction("<invoke name=""processXML"" returntype=""xml""><arguments><xml>" & xmlData & "</xml></arguments></invoke>") ``` 在Flash文件中,可以这样处理传入的XML数据: ```as function processXML(xmlData:XML):Void { trace("Received XML: " + xmlData); } ``` 通过这种方式,我们可以实现更高级的功能,比如动态生成复杂的UI界面或者进行复杂的业务逻辑处理。 #### 五、总结 通过上述介绍,我们可以看到`CallFunction`在VC、VB、C#与Flash 8结合开发中的强大功能。它不仅简化了不同编程环境间的通信,还大大提高了开发效率和灵活性。开发者可以根据自己的需求选择合适的编程语言与Flash进行结合,实现各种多媒体应用的开发。此外,随着技术的发展,虽然Flash已逐渐退出历史舞台,但这些基础知识仍然对理解和学习其他类似的跨平台交互技术有着重要的参考价值。
不久前我写了一篇关于flash与微软产品互动开发的随笔,受到很多网页的关注,但参与讨论的人很少,(当时文章的地址:请各位高手讨论一下flash.ocx(8.0版本的)与.net结合的编程) 当时我遗留了一个问题,就是flash8.ocx中对象的callfunction怎样运用,现在我在这里简单补偿一下callfunction的运用,注意swf文件要用flash8.0版本制作,flash控件要flash8.ocx版本
VB描述(传多个参数)
VB端
Private Sub Command1_Click()
Flash1.CallFunction "<invoke name=""show"" returntype=""xml""><arguments><string>hello</string><string>world</string></arguments></invoke>" '篇幅关系,与上面同行
End Sub
Private Sub Form_Load()
ShockwaveFlash1.LoadMovie 0, App.Path & "\showstring.swf"
End Sub
flash端
①添加一个文本框text_txt以显示效果
②ActionScript代码为
function show(str1:String,str2:String):Void{
test_txt.text=str1+" : "+str2;
}
flash.external.ExternalInterface.addCallback("show",this,show);
C++或C#描述(只传一个参数,用)
主程序端:
flash1.LoadMovie(0,Application.StartPath+"\showstring.swf");
flash1.CallFunction("<invoke name=\"test\" returntype=\"xml\"><arguments><string>Helloworld</string></arguments></invoke>");
flash端:
①添加一个文本框text_txt以显示效果或用trace("call: "+result+"")
②ActionScript代码为,其中result只是参数,而主程序端使用AS的函数时不需要关心参数名,只有知道有参数个数,或参数位置
function test(result:Object):Void{
test_txt.text=result;
}
flash.external.ExternalInterface.addCallback("test", this, test);
从以上可以看出,在flash8.0新多版本里flash对外部程序调用其actionscript脚本函数时,已经支持,并且是用Xml传递参数了,这样给很多程序员带来极大多方便和开发灵感
- zhukun12302012-01-19只是一篇文章啊,网上还能搜到的,内容太少,没有源码,放在这里不合适吧
- Damayi2013-05-06先下载再学习,文章也行啊。
- hbpcywl2012-12-23只是一篇文章啊,网上还能搜到的
- 粉丝: 26
- 资源: 21
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ACC自适应巡航的carsim与simulink联合仿真模型
- 儿童节烟花代码python实现
- 重庆邮电大学信号处理实验二报告
- 基于蒙特卡洛法的概率潮流 以IEEE33节点的电网为研究对象 建立了光伏和风电的概率出力模型 采用蒙特卡洛法进行随机抽样 之后基于抽样序列进行概率潮流计算 最后得到电网的电压概率出力曲线 程序有基
- SPI 接口作为slave的代码,Verilog编写注释详细,功能正确;
- python打包工具-windows一键打包运行
- 温度通信系统 LCD显示+上位机显示 传感器使用的是ds18b20,LCD显示温度,还可以串口通信在pc上显示温度,并且有VB的上位机程序,实时显示波形,实物验证成功 自己写的代码,注释详细 有代码有
- FocusAny v0.5.0 分离窗口快捷键,智能区域,工单使用支持 一个专注高效的AI工具条,可以使用 Alt / Option+空格 一键唤起,通过插件快速安装,可以扩展出非常多的功能
- 国产兼容三菱FX3U源码,最新一波bug修改,修改监控时卡顿问题 8位口令功能,程序消除功能,定时器特殊情况下不运行问题 带modbus-tcp功能,实时时钟,深度测试后,修改一些主要bug后,稳
- 爱乔(上海)医疗科技有限公司创投信息
- 电动汽车优化调度(分时电价调度) 软件:Matlab 介绍:首先利用蒙特卡洛模拟法模拟出电动汽车负荷曲线同时求解出无序充电功率曲线,作为有序充电曲线的对比基础,之后利用拉格朗日松弛算进行电动汽车优化调
- 北京慧夜科技有限公司创投信息
- 基于粒子群优化随机森林(PSO-RF)的数据回归预测 matlab代码
- 信号处理实验报告2-7.7z
- 高速铁路环境的时分-长期演进(TD-LTE)系统A3事件触发切算法的优化 通过对常规的A3事件切判决准则的研究,提供基于用户终端(UE)速度的A3事件触发切判决准则的算法 介绍时分-长期演进(TD
- 北京探马企服科技有限公司创投信息