是否有一種方式來運行的SWF文件(不使用瀏覽器)使用C++? 我需要啓動一個swf遊戲並傳遞一些參數以便正確加載。我有一個win32應用程序。在我的應用程序中使用按鈕,我需要啓動遊戲。我將不勝感激任何幫助。謝謝。播放SWF遊戲
順便說一句,我使用cocos2dx我的UI。 (也許這些信息可以幫助)
是否有一種方式來運行的SWF文件(不使用瀏覽器)使用C++? 我需要啓動一個swf遊戲並傳遞一些參數以便正確加載。我有一個win32應用程序。在我的應用程序中使用按鈕,我需要啓動遊戲。我將不勝感激任何幫助。謝謝。播放SWF遊戲
順便說一句,我使用cocos2dx我的UI。 (也許這些信息可以幫助)
如果您只需要使用正確的參數啓動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);
}
嗨克里斯。感謝您的回答。 如果我想使用第一個選項,你有教程我可以跟隨/閱讀,所以我可以得到一個開始?我是所有這些人的新手,我會很感激所有我能得到的幫助。非常感謝。 – cessmestreet
我已經添加了一個使用CreateProcess的示例。 'exec'並不完全是啓動我認爲的流程的標準方式。 –
啓動Flash播放器會非常麻煩 - 除非您只針對您的機器。大多數用戶不會安裝獨立的Flash播放器,可執行文件的名稱可能不是這個答案給出的名稱 - 它會根據版本進行更改 - 例如。我的是flashplayer_17_sa_debug.exe)。您也無權在線分發。 – MuertoExcobito
如果要嵌入播放SWF到你的應用程序,而無需使用任何類型的瀏覽器,你需要嵌入Flash運行時爲您的應用程序。 Scaleform可能是最着名的第三方Flash運行時,並且具有C++接口。
謝謝你,但這需要我使用另一個工作室,對吧?我希望能找到像我可以使用的庫或命令或類似的東西。但無論如何,謝謝。 – cessmestreet
只有運行時 - 你需要以某種方式來創建你的資產 - 通常不過的Flash工作室,雖然你可以使用Flash開發,以及其他工具。但是,從你的問題,這聽起來像你已經擁有你想要一個SWF文件播放 - 在這種情況下,你只需要在Scaleform的庫(或其他Flash運行時)整合,併發揮你的資產。 – MuertoExcobito
你好@ @ muertoexcobito謝謝你的快速回復。我對scaleform庫不熟悉,你能指點我一個很好的教程或指導嗎?我很想看看它並嘗試一下。非常感謝你:) – cessmestreet
運行它在任何瀏覽器狀的部分?像QT中的QWebView一樣。如果是Windows - 可能你可以使用IWebBrowser2 – Starl1ght
將IWebBrowser啓動一個新窗口嗎?它是一個彈出窗口?對不起,我沒有使用過IWebBrowser2。 – cessmestreet