【发布时间】:2020-07-21 18:54:25
【问题描述】:
大约十年前,我开发了一些颇受欢迎的 Flash 游戏,最近人们一直要求我将它们移植到 Steam。几天来,我一直在研究如何做到这一点,但感觉就像试图弄清楚如何让 GameBoy 卡带在 iPhone 上运行,而在谷歌上搜索答案就像考古学一样,因为再也没有人谈论 Flash。
Flash 可以构建为捆绑了 Flash Player 的 exe 投影仪,但它将保存的数据存储在脆弱的 cookie 中,因此我需要构建一个可以与其交换数据的包装器,以更可靠地保存数据。我已经设法在 Windows 窗体中构建了一些简单的东西(我的经验有限),但是有两种可能性,每种都有不同的问题:
一个是我在exe win投影机版本的Flash文件中加载为进程:
game = Process.Start ( "MARDEK.exe" );
game.WaitForInputIdle ( );
game.EnableRaisingEvents = true;
game.Exited += ( sender, e ) => { Close ( ); };
这可行,并且不需要用户安装 Flash Player,但我不知道它是否可以与 C# 双向交换数据。
另一种可能是直接嵌入swf:
swf = new AxShockwaveFlashObjects.AxShockwaveFlash ( );
Controls.Add ( swf );
swf.Size = new Size ( 720, 528 );
swf.Location = new Point ( 10, 10 );
swf.BringToFront ( );
swf.LoadMovie ( 0, "MARDEK.swf" );
我认为 然后 swf 可以使用称为 ExternalInterface 的东西与 C# 来回通信。不过,一个大问题是我不认为 Flash Player 是捆绑在一起的,所以用户应该单独安装它。这是不可接受的。
我找到了一些安装在我的系统上的 Flash Player 的 .dll 文件,但我不知道是否可以将它们捆绑在一起并让 AxShockwaveFlashObjects 使用它们而不是用户安装的文件。这可能是理想的情况。
我知道这是一个晦涩难懂的问题 - 这就是为什么我不得不问的原因,因为 Google 告诉我的信息太少了 - 但我们将不胜感激任何帮助!
【问题讨论】: