Javascript 在游戏应用程序中打开游戏

Javascript 在游戏应用程序中打开游戏,javascript,android,html,phaser-framework,Javascript,Android,Html,Phaser Framework,我需要在游戏中打开游戏 我的意思是: 打开应用程序: 现在转到第四个按钮(游戏板)。 当我们点击游戏图标时,我想打开游戏(这个游戏在pandachii窗口(brick destryer)下面)。 我还需要从这个砖块破坏者那里得到一个指向潘达奇的点 Pandachii游戏已存档:js/main.js- Brick Destroyer在文件中:js/Brick-destroy.js 另外,当我们打开这个游戏砖块破坏者潘达奇必须在后台运行(仍然活着) 这个游戏将通过一些框架模仿android应用程

我需要在游戏中打开游戏

我的意思是: 打开应用程序:

现在转到第四个按钮(游戏板)。 当我们点击游戏图标时,我想打开游戏(这个游戏在pandachii窗口(brick destryer)下面)。 我还需要从这个砖块破坏者那里得到一个指向潘达奇的点

Pandachii游戏已存档:js/main.js-

Brick Destroyer在文件中:js/Brick-destroy.js

另外,当我们打开这个游戏砖块破坏者潘达奇必须在后台运行(仍然活着)


这个游戏将通过一些框架模仿android应用程序。

这是一个相当广泛的问题,可能有很多答案;它可以归结为一个基于您选择使用的框架的架构决策,以及您所说的确切含义

pandachii肯定在后台运行

我将假设你必须能够与潘达吉沟通,例如,“砖头驱逐舰”必须能够查询潘达吉的某些信息,并将某些信息发送回潘达吉;还有,一旦你完成了“砖块毁灭者”的任务,你希望回到潘达奇,回到你离开的那个州。我将在下面总结三种可能的方法:fragments、Mario Zechner开发的游戏框架和WebView

片段

我目前对这类问题的首选解决方案是使用片段。我使用一个带有容器的主活动,我可以根据需要将不同的片段交换到其中。每个都执行特定的功能(这将是您的游戏)并管理自己的状态。为了能够与pandachii通信,您需要在pandachii片段上保留一个句柄,即使它没有显示

为了在片段之间进行通信,我使用了在与其他片段通信中描述的片段到活动的通信机制。主活动被注册为来自片段的回调的侦听器(例如用于brick destroyer的回调)。为了将消息传递给另一个片段(例如pandachii的片段),主活动使用findFragmentById()定位pandachii的片段,然后调用该片段中的相应方法

要在片段(游戏)之间切换,您需要处理当前片段(游戏)中的某个事件(对应于单击上面问题中的游戏图标),该事件会触发与主要活动的通信(参见上一段),您可以使用FragmentTransaction切换显示的片段-与其他片段通信时也描述了该过程

这种方法有几个缺点。首先,您希望pandachii在后台运行,因此必须在主要活动中保留对pandachii片段的引用(或者,如果你真的希望它一直显示出来,那么在你的主要活动中将该碎片加载到第二个容器中;这意味着你将需要为你的下属游戏(如砖块破坏者)处理该碎片稍微不同)第二,如果在运行brick destroyer时有代码必须在pandachii中实际执行,那么pandachii片段中的线程似乎是显而易见的答案

要使用这种方法直接运行javascript,请阅读WebView部分

Mario Zechner的框架

Mario Zechner描述了他在《开始Android游戏》(ISBN 978-1-4302-3042-7)中开发的游戏框架。这本书(或至少是我的副本)于2011年出版,因此有点过时——例如,它没有使用碎片。但框架仍然牢固

本质上,Zechner使用带有画布的单个活动,每个游戏将渲染到画布中。游戏由一系列类实现,例如直接渲染到主活动画布中的Screen类和维护游戏状态的World类。主活动在需要时在屏幕实例之间交换chner的框架有一个单独的游戏屏幕,其他屏幕用于设置选项、显示高分等。但该框架适用于处理多个游戏的情况

在这个框架中,您还将在主活动中保留对代表pandachii的Screen/World对象的引用,并通过对主活动的调用进行通信

要使用这种方法直接运行javascript,请阅读WebView部分

WebView

没有命名框架,您会说:

这个游戏将通过一些框架模拟到android应用程序中

根据您的标签,我推断您希望使用Phaser HTML5框架。这可能会使Zechner的框架在概念上更适合您的需要,因为他的框架已经在使用画布

但是,您可以直接使用WebView。描述了如何将javascript代码绑定到Android代码,Android代码可以提供游戏间通信机制。在这种情况下,您可能需要为javascript游戏构建代理对象;例如,在启动brick destroyer.Alter时存储或重建pandachii状态的对象当然,您可能会使用两个Web视图,一个始终显示pandachii(但在运行从属游戏时可见性设置为GONE),另一个显示从属游戏(在未玩从属游戏时可见性设置为GONE);然后使用javascript到Android绑定在两个Web视图之间进行通信

WebView的使用可以与上述两种方法中的任何一种结合使用。在基于片段的方法中,在片段中放置WebView并在片段中运行javascript。将片段代码绑定到javascript并继续使用上述片段间通信方法。在Zechner的框架中,replac在主活动的画布上放置一个容器,您可以在其中放置一个由Screen类管理的WebView(每个屏幕都有自己的