2015-12-18 167 views
1

是否有一種方式來運行的SWF文件(不使用瀏覽器)使用C++? 我需要啓動一個swf遊戲並傳遞一些參數以便正確加載。我有一個win32應用程序。在我的應用程序中使用按鈕,我需要啓動遊戲。我將不勝感激任何幫助。謝謝。播放SWF遊戲

順便說一句,我使用cocos2dx我的UI。 (也許這些信息可以幫助)

+0

運行它在任何瀏覽器狀的部分?像QT中的QWebView一樣。如果是Windows - 可能你可以使用IWebBrowser2 – Starl1ght

+0

將IWebBrowser啓動一個新窗口嗎?它是一個彈出窗口?對不起,我沒有使用過IWebBrowser2。 – cessmestreet

回答

0

如果您只需要使用正確的參數啓動swf遊戲,那麼最可能的方式是使用exec,然後運行Flash Standalone Player。這將在其自己的窗口中播放Flash電影。另外,加載Flash Browser插件的NPAPI版本並不難,並且允許您在Cocos2d-x應用程序中嵌入Flash遊戲,假設您高興地竊聽Cocos2d-x代碼足以讓您的Windows'OS窗口句柄。

第三種方法是加載控件的ActiveX版本,但這只是一個可怕的技術,需要您的應用程序具有管理權限才能安裝該控件(如果它尚未安裝)。

獨立和玩家NPAPI可以捆綁,並從你的應用程序直接使用。


編輯:出於某種原因,我認爲exec是一個標準的C函數,但它似乎沒有真正如此。因此,啓動閃光燈獨立播放器使用CreateProcess命令行是這樣的:

LPCTSTR pathToFlashPlayer = TEXT(".\\bin\\flashplayer18_sa_win_32.exe"); 
LPCTSTR pathToSwf = TEXT(".\\res\\content.swf"); 

STARTUPINFO si = { sizeof(si), 0 }; 
PROCESS_INFORMATION pi = { 0 }; 
auto success = CreateProcess(
    pathToFlashPlayer, 
    pathToSwf, 
    NULL, NULL, FALSE, 0, NULL, NULL, 
    &si, &pi); 
if(success){ 
    CloseHandle(pi.hProcess); 
    CloseHandle(pi.hThread); 
} 
+0

嗨克里斯。感謝您的回答。 如果我想使用第一個選項,你有教程我可以跟隨/閱讀,所以我可以得到一個開始?我是所有這些人的新手,我會很感激所有我能得到的幫助。非常感謝。 – cessmestreet

+0

我已經添加了一個使用CreateProcess的示例。 'exec'並不完全是啓動我認爲的流程的標準方式。 –

+0

啓動Flash播放器會非常麻煩 - 除非您只針對您的機器。大多數用戶不會安裝獨立的Flash播放器,可執行文件的名稱可能不是這個答案給出的名稱 - 它會根據版本進行更改 - 例如。我的是flashplayer_17_sa_debug.exe)。您也無權在線分發。 – MuertoExcobito

1

如果要嵌入播放SWF到你的應用程序,而無需使用任何類型的瀏覽器,你需要嵌入Flash運行時爲您的應用程序。 Scaleform可能是最着名的第三方Flash運行時,並且具有C++接口。

+0

謝謝你,但這需要我使用另一個工作室,對吧?我希望能找到像我可以使用的庫或命令或類似的東西。但無論如何,謝謝。 – cessmestreet

+0

只有運行時 - 你需要以某種方式來創建你的資產 - 通常不過的Flash工作室,雖然你可以使用Flash開發,以及其他工具。但是,從你的問題,這聽起來像你已經擁有你想要一個SWF文件播放 - 在這種情況下,你只需要在Scaleform的庫(或其他Flash運行時)整合,併發揮你的資產。 – MuertoExcobito

+0

你好@ @ muertoexcobito謝謝你的快速回復。我對scaleform庫不熟悉,你能指點我一個很好的教程或指導嗎?我很想看看它並嘗試一下。非常感謝你:) – cessmestreet