




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
与之间基于字符串的双向消息互传设定字符串的值vc 摘要:文章给出VC和Flash之间一种基于自定义字符串的双向消息互传机制,并应用该机制用VC和Flash联合实现进度条的效果。 关键词:Shockwave Flash Object控件;VC;通讯;双向消息互传; ActionScript :TP311:A:1009-3044(xx)18-31634-01 Messages Exchanging Between VC and Flash LIU Dong1,HUANG Yong2 (1.Institute of Educational Software of Guangzhou University,Guangzhou 510006,China;2.Institute of Educational Software of Guangzhou University,Guangzhou 510006,China) Abstract:This paper introduces a mechanism of messages exchanging based on user-defined strings between VC and Flash. As an application of the mechanism, author gives a progress bar example. Key words:Shockwave Flash Object control;VC;Communication;Messages Exchanging;ActionScript 1 问题的提出 Flash动画以其独特的优势(制作简单,易学易用,表现力较强,生成的文件小等)目前已经广泛应用于网络以及各种媒体,我们现在随处可以见到很多制作精美的动画,我们知道在程序设计和软件开发中要想实现类似的效果是相当困难的,需要很多图形图像方面的知识和技巧,把Flash制作的动画整合在应用软件中显然是一个不错的想法,在VC(其他编程语言也一样)中可以使用shockwave flash object控件来达到目的。但有时我们不仅仅是在程序中播放动画,还需要做一些交互,比如:我们想知道动画播放的进度、使用者在动画中单击了哪个按钮等等,本文在VC和Flash之间消息互传方面进行了一些研究,探索出一种基于字符串的双向消息互传机制,并给出一个应用范例。 2 消息双向互传的实现原理 要想实现双向的消息互传,需要满足如下条件:1.有一个发送方和接收方都能理解的消息定义;2.双方均有接收和发送消息的能力; 3.必须定时(及时)查询消息的到来。第一个条件比较容易满足,可以自定义一些字符串作为消息。下面分别从VC和Flash的角度解释该机制的实现原理。 2.1 VC中消息的接收、发送和查询 在VC中插入shockwave flash object控件之后,可以让它像普通的windows控件一样来接收并处理消息。这个控件有一个消息:FSCommand,为它添加消息处理函数如OnFSCommandShockwaveflash1(LPCTSTR mand, LPCTSTR args)。此函数有两个参数,均为字符串,对应于Flash的ActionScript中fsmand()命令中的两个参数。可以只用其中的一个,也可两个都用,根据实际情况来定,VC会为这个控件设置一个定时器,一旦Flash动画有消息发送过来VC会及时收到,这样就实现了消息的接收。还有另外一种方式就是:利用Shockwave Flash Object控件提供的一个方法GetVariable(),可以得到Flash ActionScript中变量的值。因此我们可以通过设置一个定时器不断调用GetVariable()来查询变量的值,这样也可以实现消息的接收,但这种方法比较麻烦,所以我们这里采用前者。 Shockwave Flash Object控件提供另外一个方法SetVariable(),可以随时设置Flash ActionScript中的变量的值,有两个参数,均为字符串。这样就等于是发送消息给Flash了。 2.2 Flash中消息的接收、发送和查询 在Flash中发送消息也很方便,使用函数fsmand(mand:String, parameters:String),该函数可以使swf文件与Flash Player 或承载 Flash Player 的程序(如 Web 浏览器、可承载ActiveX控件的程序等)进行通讯。 Flash接收消息就略微麻烦一点,需要定义一个String类型的变量用于接收VC对其值的设置,同时还要使用SetInterval()函数定义一个定时器,不断地查询该变量的值以便Flash及时做出响应。 3 应用消息互传机制实现进度条 理解了消息互传机制的原理之后,我们应用该机制实现一个进度条实例。基本想法是:用Flash制作一个进度条,在VC中设置进度条的百分比使得进度条的长度发生变化;当进度为100%时Flash动画发送“suess”消息通知VC,VC弹出消息框作出响应。 3.1Flash方面的制作与编程 Flash方面的制作包括三层,最下面一层是一个影片剪辑起个名字叫progress_mc,这个影片根据需要可简单也可复杂,这里只要知道有一个外框,还有一个进度条Inside_mc;第二层是百分比文字提示,有一个动态文本框,起个变量名txt_per;第三层用作action层,程序如下: stop(); var perLoaded:String=0; progress_mc.Inside_mc._xscale = 0; /让初始进度为0 function setPercent() /用于执行进度条的变化 if(Number(perLoaded)100) /如果进度超过100,就向VC发送消息 fsmand(progress,suess); else /设置进度条的长度和文本框的文字提示 progress_mc.Inside_mc._xscale = Number(perLoaded); txt_per = perLoaded+%; /设置每0.1秒查询一次perLoaded值的变化 var perID:Number = setInterval(setPercent,100); 制作完毕后保存并发布为progress.swf。 3.2VC方面的制作与编程 在VC中建立一个基于对话框的应用程序,插入一个Flash控件、两个按钮(开始和停止)。为Flash控件添加一个成员变量CShockwaveFlash类型的m_ctrlFlash和一个整型变量percent,在构造函数中将percent初始化为0. 在对话框的初始化函数BOOL CFlashProgressDlg:OnInitDialog()中添加代码如下: char dirMAX_PATH; char ch = ; 本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文 char DirNameMAX_PATH; char * location; unsigned intLength; :GetModuleFileName(NULL,dir,MAX_PATH); location = strrchr(dir,ch); Length = location - dir; strncpy(DirName,dir,Length); DirNameLength = 0; strcat(DirName,progress.swf);/得到progress.swf的完整路径 m_ctrlFlash.LoadMovie(0,DirName); GetDlgItem(IDC_BUTTON_PAUSE)-EnableWindow(FALSE); GetDlgItem(IDC_BUTTON_START)-EnableWindow(TRUE); 为Flash控件添加一个消息处理函数如下: void CFlashProgressDlg:OnFSCommandShockwaveflash1(LPCTSTR mand, LPCTSTR args) if(strcmp(mand,progress)=0) /如果收到Flash的消息,说明下载成功,弹出对话框 if(strcmp(args,suess) = 0) this-MessageBox(下载完成!); KillTimer(1); GetDlgItem(IDC_BUTTON_PAUSE)-EnableWindow(FALSE); GetDlgItem(IDC_BUTTON_START)-EnableWindow(FALSE); 添加定时器函数如下: void CFlashProgressDlg:OnTimer(UINT nIDEvent) CString strPercent; strPercent.Format(%d,percent+); m_ctrlFlash.SetVariable(perLoaded,strPercent); CDialog:OnTimer(nIDEvent); 为开始和停止按钮添加消息处理函数如下: void CFlashProgressDlg:OnButtonPause() KillTimer(1); GetDlgItem(IDC_BUTTON_PAUSE)-EnableWindow(FALSE); GetDlgItem(IDC_BUTTON_START)-EnableWindow(TRUE); void CFlashProgressDlg:OnButtonStart() SetTimer(1,100,NULL); if(percent100)percent = 0; GetDlgItem(IDC_BUTTON_PAUSE)-EnableWindow(TRUE); GetDlgItem(IDC_BUTTON_START)-EnableWindow(FALSE); 以上程序在VC6.0和Flash 8.0下调试通过。本文中所涉及的所有源程序均可通过链接lyld3618.go1.省略/download/flashprogress.rar下载。 4 结束语 根据以上提供的原理和方法,我们就建立了一种VC和Flash之
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肉品加工厂汇报
- 公司的合并与分立课件
- 水电站运行人员年终总结
- 《美丽的青花瓷》课件
- 《美丽的吻》课件
- 《绞刑架下的报告》课件
- 脑出血的初期康复护理
- 药店个人工作总结
- 新员工培训人力政策解读
- 装饰施工员年终工作总结
- 2输变电工程施工质量验收统一表式(变电工程土建专业)
- 中级卷烟包装工(四级)专业知识考试复习题库大全-下(简答题汇总)
- 福建省技能人才评价考评员题库
- SMT与DIP工艺制程详细流程介绍
- 管理者角色认知与转换课件
- 教科版科学二年级上册 全册整套课件
- 六年级上册数学教案-第一单元复习教案|人教新课标版
- 小学道德与法治学科教师专业素质考试试题及答案
- 全国质量奖现场汇报材料(生产过程及结果)课件
- 政策评价-卫生政策分析课件
- 高中物理实验—测定物体的速度及加速度(含逐差法)
评论
0/150
提交评论