在游戏应用中打开游戏

时间:2016-05-30 13:39:24

标签: javascript android html phaser-framework

我需要在游戏中打开游戏......

我的意思是: 打开应用: Pandachii

现在转到第4个按钮(游戏手柄)。 当我们点击游戏图标时我想打开游戏(这个游戏下面是pandachii窗口(brick destryer))。 我还需要从这个砖块驱逐舰到pandachii。

Pandachii游戏存档:js / main.js - http://nwstudio.esy.es/panda/js/main.js

Brick Destroyer存档:js / brick-destroy.js

当我们打开这个游戏砖驱逐舰时,pandachii必须在后台运行(仍然活着)。

这款游戏将通过一些框架模拟到Android应用程序。

1 个答案:

答案 0 :(得分:1)

这是一个相当广泛的问题,可以有很多答案;它归结为基于您选择使用的框架以及您完全由

表示的框架的架构决策
  

pandachii必须在后台运行

我打算假设您必须能够与pandachii进行通信,例如: brick-destroyer必须能够查询pandachii以获取某些信息,并将某些信息发送回pandachii;而且一旦你完成了砖头驱逐舰,你希望在离开的同一个州返回pandachii。我将总结以下三种可能的方法:片段,由Mario Zechner开发的游戏框架和WebView。

<强>片段

我目前对此类问题的首选解决方案是使用片段。我使用一个带有容器的主活动,我可以根据需要交换不同的碎片。每个fragment执行一个特定的功能(这将是你的游戏)并管理自己的状态。为了能够与pandachii进行通信,即使未显示pandachii,也需要对pandachii的片段进行处理。

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

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

这种方法有一些皱纹。首先,您希望pandachii在后台运行,因此您必须在主活动中保留对pandachii片段的引用(或者,如果您确实希望它始终显示,则将该片段加载到主活动中的第二个容器中;这意味着您将需要为您的下属游戏处理片段,例如brick-destroyer稍微不同)。其次,如果在运行brick-destroyer时有必要在pandachii中执行的代码,那么pandachii片段中的一个Thread似乎就是明显的答案。

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

Mario Zechner的框架

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

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

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

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

<强> web视图

如果没有命名框架,请说:

  

这款游戏将通过一些框架模拟到Android应用程序。

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

但是,您可以直接使用WebView。 Building Web Apps in WebView描述了如何将您的javascript代码绑定到Android代码,这可以提供游戏间通信的机制。在这种情况下,您可能必须为您的javascript游戏构建代理对象;例如,当你启动brick-destroyer时,存储或重建pandachii状态的对象。或者,您可以使用两个WebView,一个始终显示pandachii(但在运行从属游戏时可见性设置为GONE),另一个显示从属游戏(当没有下级游戏时,可见性设置为GONE);然后你使用javascript to Android绑定在两个WebViews之间进行通信。

WebView的这种使用可以与上面提到的其他两种方法结合使用。在基于片段的方法中,在Fragment中放置一个WebView并在Fragment中运行javascript。将Fragment代码绑定到javascript并继续使用上述的片段间通信方法。在Zechner的框架中,将主活动中的画布替换为放置由Screen类管理的WebView的容器(并且每个Screen都有自己的WebView);再次将屏幕代码绑定到javascript代码并使用它来在游戏之间进行通信。