2015-12-18 165 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