VC使用flash简易教程
?
1.基本概念:
VC為Flash實(shí)現(xiàn)了一個(gè)CWnd的包裝:CShockwaveFlash,該類實(shí)現(xiàn)了FlashActiveX控件的所有功能。
shockwave flash object控件有四個(gè)事件句柄(eventhandler)。分別是:FSCommand, OnProgress, FlashCall, OnReadyState。
?
FSCommand:flash就是給支持它的應(yīng)用程序發(fā)送消息的手段。除了利用FSCommand外,shockwave flash object還提供了兩個(gè)進(jìn)行交互的函數(shù),一個(gè)是CString GetVariable(LPCTSTR name),用來(lái)獲得flash動(dòng)畫(huà)中變量name的值,該值以CString的形式返回給調(diào)用者;一個(gè)是void SetVariable(LPCTSTR name, LPCTSTR value),可以用來(lái)將flash動(dòng)畫(huà)中的name變量設(shè)置一個(gè)值value。但這種交互方式有比較高的耦合性,需要flash開(kāi)發(fā)者及應(yīng)用程序的開(kāi)發(fā) 者有比較緊密的配合。但這種方式也可以一些交互性很強(qiáng)的flash。當(dāng)然更多的是兩種方式同時(shí)采用。因?yàn)檫@兩種方法各有不同的使用背景。一般來(lái)說(shuō)如果需要對(duì)整個(gè)flash和應(yīng)用程序的外部行為進(jìn)行控制則采用FSCommand,而如果只是需要對(duì)flash的內(nèi)部動(dòng)作進(jìn)行響應(yīng)則使用GetVariable和SetVariable。
FSCommand事件說(shuō)明
 ??? FSCommand(command,args)命令有兩個(gè)參數(shù),都是字符串,你可以在flash腳本中指定任意的字符串。比如用戶按下flash動(dòng)畫(huà)的一個(gè)按鈕就發(fā)送FSCommand("bt","bt1")這樣一個(gè)消息,按下另一個(gè)按鈕發(fā)送FSCommand("bt","bt2"),而我們的程序 收到FSCommand消息后就對(duì)通過(guò)兩個(gè)參數(shù)的不同字符串來(lái)判斷用戶按下的是哪個(gè)按鈕。簡(jiǎn)單的說(shuō),就是在flash動(dòng)畫(huà)中使用FSCommand發(fā)送消息,在我們的程序接收和處理FSCommand消息。
?
2.VC使用flash簡(jiǎn)易教程
1.??????插入Shockwave Flash Object空間(Active)
2.??????給新控件添加一個(gè)ctrl變量flashUI
3.??????初始化添加代碼:
flashUI.LoadMovie(0, L"C:\\Users\\Administrator\\Desktop\\touqiu.swf");
3.Flash與后臺(tái)數(shù)據(jù)交互方法
4.VC中CShockwaveFlash的常用函數(shù)
Play()??????????????????????????????????????????????????播放動(dòng)畫(huà)?
 StopPlay()?????????????????????????????????????????????? 停止動(dòng)畫(huà)?
 IsPlaying()????????????????????????????????????????????? 動(dòng)畫(huà)是否正在播放(true,false)?
 GotoFrame(frame_number)????????????????????????????????? 跳轉(zhuǎn)到某幀(frame_number+1)?
 TotalFrames()??????????????????????????????????????????? 獲取動(dòng)畫(huà)總幀數(shù)?
 CurrentFrame() ??????????????????????????????????????????回傳當(dāng)前動(dòng)畫(huà)所在幀數(shù)-1?
 Rewind()????????????????????????????????????????????????使動(dòng)畫(huà)返回第一幀?
 SetZoomRect(left,top,right,buttom)?????????????????????? 放大指定區(qū)域?
 Zoom(percent) ???????????????????????????????????????????改變動(dòng)畫(huà)大小?
 Pan(x_position,y_position,unit)???????????????????????? 使動(dòng)畫(huà)在x,y方向上平移?
 PercentLoaded()??? ??????????????????????????????????返回動(dòng)畫(huà)被載入的百分比(0-100)?
 LoadMovie(level_number,path)??????????????????? ???? 加載動(dòng)畫(huà)?(絕對(duì)路徑)
 TGotoFrame(movie_clip,frame_number)??? ??????????????movie_clip跳轉(zhuǎn)到指定幀數(shù)?
 TGotoLabel(muvie_clip,label_name)??? ????????????????movie_clip跳轉(zhuǎn)到指定標(biāo)簽?
 TCurrentFrame(movie_clip)??? ????????????????????????回傳movie_clip當(dāng)前幀-1?
 TCurrentLabel(movie_clip)?????????????????????????? ?回傳movie_clip當(dāng)前標(biāo)簽?
 TPlay(movie_clip)??? ????????????????????????????????播放movie_clip?
 TStopPlay(movie_clip)?????????????????????????????? ?停止movie_clip的播放?
 GetVariable(variable_name)????????????????????????  ? 獲取變量?
 SetVariable(variable_name,value)??? ?????????????????變量賦值?
 TCallFrame(movie_clip,frame_number)????????????????  ?call指定幀上的action?
 TCallLabel(movie_clip,label)??? ?????????????????????call指定標(biāo)簽上的action?
 TGetProperty(movie_clip,property)?????????????????? ?獲取movie_clip的指定屬性?
 TSetProperty(movie_clip,property,number)??? ?????????設(shè)置movie_clip的指定屬性
 CallFunction(CString)??????????????????????????????? MFC向Flash發(fā)送信息
6.?????? 實(shí)現(xiàn)MFC與Flash的通信
首先做好用來(lái)測(cè)試用的flash
在flash上面點(diǎn)擊兩個(gè)紅色按鈕,向MFC發(fā)送兩個(gè)不同的消息:
 fscommand("fs1");
 fscommand("fs2");
 MFC向flash發(fā)送消息:
 在FLASH中,要用ExternalInterface.addCallback把能被外部調(diào)用的函數(shù)注冊(cè)一下,例如:ExternalInterface.addCallback("strShow1",strShow1); 
 ExternalInterface.addCallback("strShow2",strShow2); 
 
 
1,Flash通過(guò)FSCommand消息調(diào)用MFC
 第一步:添加消息處理函數(shù)。在Flash控件上點(diǎn)右鍵,然后選擇“添加事件處理程序”void CFlashTestDlg::FSCommandShockwaveflash1(LPCTSTRcommand, LPCTSTR args)
 第二步:編寫(xiě)消息處理代碼。
 void CFlashTestDlg::FSCommandShockwaveflash1(LPCTSTR command,LPCTSTR args)
{??? // TODO: 本次只是測(cè)試,正規(guī)項(xiàng)目一般都是switch語(yǔ)句
 ???? CString  toShow; 
 ???? toShow.Format("Flash向MFC發(fā)送的參數(shù)列表command:%s---args:%s",command,args); 
 ???? AfxMessageBox(_T(toShow)); 
 }
 2、MFC通過(guò)CallFunction函數(shù)調(diào)用Flash
 ???? CString  temp = "<invokename=\"strShow1\"><arguments><string>這是C++調(diào)用flash的響應(yīng)</string></arguments></invoke>";
 flashUI.CallFunction(temp); 
 上面這個(gè)函數(shù)會(huì)調(diào)用flash文件里的strShow1函數(shù)。
 
 
總結(jié)
以上是生活随笔為你收集整理的VC使用flash简易教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                        - 上一篇: 几个预编译指令的用法
 - 下一篇: Inno Setup 5制作安装程序