使用 C++ 玩 swf 游戏

Play swf game using c++

有没有办法使用 C++ 运行 swf 文件(不使用浏览器)? 我需要启动一个 swf 游戏并传递一些参数以使其正确加载。我有一个 win32 应用程序。使用我的应用程序中的按钮,我需要启动游戏。我将不胜感激任何帮助。谢谢。

顺便说一下,我在 UI 中使用 cocos2dx。 (也许这些信息可以提供帮助)

如果您想将播放的 SWF 嵌入到您的应用程序中,而不使用任何类型的浏览器,您需要将 Flash 运行时嵌入到您的应用程序中。 Scaleform 可能是最著名的第 3 方 Flash 运行时,并且具有 C++ 接口。

如果您只需要使用正确的参数启动 swf 游戏,那么最跨平台的方法可能是使用 exec,以及 运行 和 Flash Standalone Player。这将单独播放 Flash 影片 window.

否则,加载 NPAPI 版本的 Flash 浏览器插件并不太难,并且可以让您将 Flash 游戏嵌入到您的 Cocos2d-x 应用程序中,前提是您乐于破解 Cocos2d-x 代码足以让你的 windows' OS window 句柄。

第三种方法是加载控件的 ActiveX 版本,但这只是一种可怕的技术,如果尚未安装控件,则需要您的应用程序具有管理权限才能安装该控件。

独立播放器和 NPAPI 播放器可以直接从您的应用程序中捆绑和使用。


编辑:出于某种原因,我认为 exec 是一个标准的 C 函数,但实际上似乎并非如此。因此,使用 CreateProcess 通过命令行启动 Flash 独立播放器将如下所示:

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);
}