OTHER PAGES

WELCOME

Move your mouse onto the image to see the bravo CSS3 Transition!

2013年9月29日 星期日

Flash Player與VB6共同開發的框架

這應該是個很古老的話題,但是VB6的支援性很好,從Win98一直到Win8,因此相較於.Net我還是一直偏好著VB6。不過,有人會說,VB6的應用程式介面已經老掉牙了,就連視覺化樣式的用途都非常侷限,因此可以借用Flash的特長來製作介面,需要用到的功能再跟VB要就好。兩者之間的溝通不算容易,但需要雙向傳輸的情形很少,可以滿足一般小程式的需求。下面是筆者自行製作的按鈕列小程式,用Flash Builder開發,好處是需要修改、調整按鈕大小的時候只需重新生成swf文件即可,不須將整個程式重新compile。



加入Flash Player

在VB表單上放入Flash Player的方法非常簡單,如同一般控制項的設定方式。唯獨要注意的是,存檔時表單上不可以殘存任何Flash控制項,否則會引發下圖的錯誤。



建議在輸出前加入就好。
除了要將swf嵌入需在設計階段製作以外,其他都可以透過執行階段設定完成,因此可以採用預設的名稱ShockwaveFlash1,並在Form_Load中加入如下:


為了將程式碼寫得更易懂,上面程式碼用到下面兩個輔助函數:



如此一來就可以正常於VB中使用Flash了。

swf嵌入的方法

SWF中有個EmbedMovie屬性,可以於設計階段將影片放入執行檔。先在Movie中填入swf的路徑,待表單顯示影片完成後,將這個屬性設為true,播放測試swf是否正確播放,再型輸出。如此一來就不需要於執行時指定movie,也不再需要外部的檔案就可以正常執行。

傳訊-FSCommand

再來是傳訊的部分,Flash可以直接發命令給外部容器(FSCommand),而VB端則會引發FSCommand事件,兩個引數分別填入,可以用switch case來區分。
Private Sub ShockwaveFlash1_FSCommand(ByVal command As String, ByVal args As String)
Select Case command
Case "aaa"
MsgBox "aaa triggered."
Case Else
MsgBox "收到意外的FSCommand指令:" + vbCrLf + command + "," + args + vbCrLf + "如果此問題持續發生,請詢問程式製作者。", , "資訊"
End Select
End Sub
至於VB和Flash互傳有點複雜,主要是透過XML傳遞,VB可以用字串的方式製造出來餵給Flash,有興趣的讀者不妨自行嘗試。


張貼留言