大约十年前,我开发了一些颇受欢迎的Flash游戏,最近有人要求我将其移植到Steam上。我一直在研究如何做到这一点,但是感觉就像是试图弄清楚如何使GameBoy弹壳可以在iPhone上工作,而谷歌搜索答案就像考古学一样,因为没有人再谈论Flash了。
Flash可以捆绑Flash Player来构建到exe投影仪,但是它将保存的数据存储在易碎的Cookie中,因此我需要构建一个包装器以与其交换数据,以更可靠地保存数据。我已经设法在Windows窗体中构建了一些简单的东西(我只有很少的经验),但是有两种可能,每种都有不同的问题:
一个是我将Flash文件的exe win投影仪版本作为过程加载:
game = Process.Start ( "MARDEK.exe" );
game.WaitForInputIdle ( );
game.EnableRaisingEvents = true;
game.Exited += ( sender, e ) => { Close ( ); };
这有效,并且不需要用户安装Flash Player,但我不知道它是否可以与C#双向交换数据。
另一种可能性是直接嵌入瑞士法郎:
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" );
I think swf然后可以使用称为ExternalInterface的东西与C#来回通信。但是,一个很大的问题是我不认为Flash Player是捆绑在一起的,因此用户应该单独安装它。这是不可接受的。
我已经为系统上安装的Flash Player找到了一些.dll文件,但是我不知道是否可以将它们捆绑在一起,并让AxShockwaveFlashObjects使用它们而不是用户所安装的文件。那可能是理想的情况。
我知道这是一个晦涩的问题-这就是我不得不问的原因,因为Google告诉我的很少-但是任何帮助将不胜感激!
Yo,我已经在Steam上发布了AS2和AS3 Flash游戏。这就是我立刻记得的内容: