MFC如何調用Flash

最近要用Flash做程序界面,所以研究了下如何在MFC下調用flash,其他開發工具也差不多的,flash會提供統一的外部API接口。

      //-------------------------------------------------------------------------------- 

        首先是在MFC中增加flash控件:就是shockwave flash object控件,現在一般電腦都有裝flash的,所以這個都有。“建立對話框應用程序後,在主菜單裏選擇“工程->添加工程->components and controls”菜單選項,這時會彈出一個components and controls gallery文件選擇對話框,裏面有兩個文件夾,一個是registered activex controls,一個是visual c++ components。選擇第一文件夾後會出現一系列系統上已註冊過的activex控件。在裏面選擇shockwave flash object(如果你係統上沒這個控件,這裏面就找不到了,可以去download個下來安裝),點擊insert將它插入工程。因爲在vc中插入工程的控件要通過一個類來操作,所以這時vc會提示你爲這個控件指定一個類名,可以使用默認的類名就行了。插入後vc會自動把這個類加入工程裏面。”如果已經裝了flash但是registered activex controls裏邊沒找到,說明沒註冊,貌似裝個flash開發工具就可以了..

         4、生成一個該控件的對象。將shockwave flash object控件成功插入自己的工程後,在vc對話框編輯器的controls面板上就會多出圖標,這個圖標就是剛加入的控件的圖標了。呵,這樣接下來怎麼用就再清楚不過了吧。和使用BUTTON、EDIT等其它windows控件一樣,把它拉到對話框上,給它關聯一個對象,對象的類就是我們剛纔插入控件的時候所產生的類。我們可以使用這個類的成員函數來操縱這個對象,來進行flash動畫的控制以及和自己的程序進行交互等操作了。這裏假設關聯的對象名爲:m_FlashPlayer。
  5、使用成員函數LoadMovie和Play來導入並播放動畫。
m_FlashPlayer.LoadMovie(0, strMovieUrl);該函數用來將動畫導入程序中,strMovieUrl爲要播放的flash路徑,要用絕對路徑。 m_FlashPlayer.Play();調用該函數開始播放動畫。在初始化對話框的函數裏面加入這兩個函數調用即可。
  怎麼樣,現在運行程序,看到flash嵌入到你的程序裏面了吧。還有幾個常用的函數可以用來控制動畫的播放,如GotoFrame(long FrameNum)可以轉到FrameNum偵播放(偵數從0開始),StopPlay()可以停止播放。。。,還有很多,可以自己試試^_^。下面我們要介紹如果進行交互性的控制了。

上面三段來自網絡..上面的說明,已經能在MFC中實現播放flash了,但是實現交互還是不行。

實現與flash交互,有兩種方法,1:模擬鼠標點擊事件,就是控制鼠標去點擊flash(我同學說他睡覺時想到的,而且真的能實現,服了!) 2、是要flash提供接口,這就需要有flash的源碼,然後自己修改,增加外部函數接口。以下來自百度知道,照裏邊做,就可以實現外部接口:

MFC可以直接設置和得到flash中的變量。調用控件的GetVariable方法和SetVariable方法現。

想讓flash主動往MFC傳內容並且讓MFC程序響應,可以在flash中調用fscommand函數,把內容傳出去。此時MFC會收到控件的FSCommand事件和內容,就可以用MFC處理了。

想讓MFC主動往flash傳內容並且讓flash響應,用控件的CallFunction方法。
想用這種方法需要先幹一些事情:
在FLASH中,要用ExternalInterface.addCallback把能被外部調用的函數註冊一下,例如:
import   flash.external.ExternalInterface;    
ExternalInterface.addCallback("theFunctionToCall", null, theFunctionToCall);
function theFunctionToCall()
{
//...
}
在MFC中,調用CallFunction方法,傳入一個比較複雜的字符串,描述了要調用的函數的名稱、參數等等,以XML的形式呈現。詳情參考FLASH幫助的“外部 API 的 XML 格式”一文。

詳情可以參考FLASH幫助裏的“使用 ExternalInterface 類”的文章。
//--------------------------------------------------------------------------------

 

注意,此處CallFunction傳遞的參數爲XML格式,如下:
m_flash.CallFunction(_T("<invoke name=\"FullScreen\" returntype=\"xml\">\<arguments></arguments>\</invoke>"));
FullScreen爲flash裏邊的外部函數接口,此處並無參數,且無返回類型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章