我需要游戏中的公开游戏..。
我的意思是:打开应用程序:潘达基
现在转到第四按钮(游戏垫)。当我们点击游戏图标时,我想打开游戏(这个游戏在潘达基窗口下面(砖墙) )。我也需要从这艘砖头驱逐舰到潘达基。
Pandachii游戏已存档: js/main.js - http://nwstudio.esy.es/panda/js/main.js
砖块驱逐舰在档案中:js/砖块销毁器
另外,当我们打开这个游戏,砖-驱逐舰,熊猫必须在后台运行(仍然活着)。
这个游戏将被模仿为android应用程序的一些框架。
发布于 2016-05-30 17:09:45
这是一个相当广泛的问题,可能有很多答案;它归结为基于您选择使用的框架的架构决策,以及您所指的确切含义。
潘达基一定是在后台运行
我的工作假设你必须能够与潘达奇沟通,例如,驱逐舰必须能够查询潘达奇的某些信息,并将某些信息发送回潘达基;而且,一旦你用了砖块驱逐舰,你希望在你离开的状态下回到潘达基。下面我将总结三种可能的方法:片段,由Mario和WebView开发的游戏框架。
片段
对于这类问题,我目前最喜欢的解决方案是使用片段。我使用一个带有容器的主活动,在这个容器中,我可以在需要时交换不同的片段。每个片段执行特定的函数(这将是您的游戏)并管理自己的状态。为了能够与pandachii进行通信,您将需要保留pandachii片段的句柄,即使它没有显示出来。
为了在片段之间进行通信,我使用片段到与其他片段通信时描述的活动通信机制。主活动被注册为片段回调的侦听器(例如用于砖块驱逐舰的回调)。为了将消息传递给另一个片段(例如,一个用于pandachii),主活动使用findFragmentById()来定位pandachii的片段,然后调用该片段中的适当方法。
要在片段(游戏)之间切换,您需要处理当前片段(游戏)中的一些事件(对应于单击上面问题中的游戏图标),这些事件会触发与主要活动的通信(参见前段),在该活动中,您可以使用FragmentTransaction切换显示的片段--在与其他片段通信时也会描述这个过程。
这种方法有几个缺点。首先,您希望pandachii在后台运行,因此您必须在您的主要活动中保留对pandachii片段的引用(如果您希望在任何时候都显示该片段,则将该片段加载到主活动中的第二个容器中;这意味着您需要为您的下属游戏处理片段,比如砖块-破坏者)。第二,如果在运行砖块驱逐舰时,必须在pandachii中实际执行代码,那么pandachii片段中的线程似乎是显而易见的答案。
要使用这种方法直接运行javascript,请阅读WebView部分。
Mario的框架
Mario描述了他在启动安卓游戏 (ISBN 978-1-4302-3042-7)中开发的一个游戏框架。这本书(或者至少是我的一本)是在2011年出版的,所以它有点过时了--例如,它没有使用片段。但框架仍然是坚实的。
实质上,Zechner使用一个带有画布的单一活动,每个游戏都会在其中呈现。游戏由一系列类实现,例如一个屏幕类,它直接在主活动的画布上执行呈现,以及一个维护游戏状态的World类。在需要的屏幕实例之间的主要活动交换-在Zechner的框架中有一个单一的游戏屏幕与其他屏幕用于设置选项,显示高分,等等。但该框架适用于处理多个游戏的情况。
在这个框架中,您还将保留对主活动中表示pandachii的Screen/World对象的引用,并通过对主活动的调用进行通信。
要使用这种方法直接运行javascript,请阅读WebView部分。
WebView
在没有命名框架的情况下,您会说:
这个游戏将被模仿为android应用程序的一些框架。
根据您的标记,我推断您希望使用Phaser HTML5框架。这可能使Zechner的框架在概念上更适合您的需要,因为他的框架已经在使用画布。
但是,您可以直接使用WebView。在WebView中构建Web应用程序描述了如何将javascript代码绑定到Android代码,这可以为游戏间通信提供一种机制。在这种情况下,您可能必须为您的javascript游戏构建代理对象;例如,当启动砖块驱逐舰时,一个用来存储或重建pandachii状态的对象。或者,您可以使用两个WebViews,一个总是显示pandachii (但在运行从属游戏时,可见性设置为GONE ),另一个显示从属游戏(在不玩从属游戏时,可见性设置为GONE );然后使用WebViews绑定的javascript在两个WebViews之间进行通信。
这种WebView的使用可以与上面提到的其他两种方法中的任何一种结合起来。在基于片段的方法中,在片段中放置一个WebView,并在片段中运行javascript。将片段代码绑定到javascript,并继续使用上面描述的片段间通信方法。在Zechner的框架中,将主活动中的画布替换为一个容器,将由Screen类管理的WebView放入其中(每个屏幕都有自己的WebView);再次将屏幕代码绑定到javascript代码,并使用该容器在游戏之间进行通信。
https://stackoverflow.com/questions/37527155
复制相似问题