开发一款Java应用程序,既可以在Web上运行,也可以作为Android应用程序运行?

4
我正在开发一个游戏,它既可以在Web上作为小程序运行,也可以在Android手机上作为应用程序运行。
这种实现方式是否可行?如果是,我需要注意哪些方面才能使其正常工作(例如不应该硬编码任何设置,而应该根据用户的设备在游戏运行时进行设置,或者不应该使用任何Java库)。
此外,游戏需要接受触摸屏幕作为Android应用程序的输入。是否可能将其构建到同一游戏中,并在运行时决定使用鼠标还是触摸屏幕作为输入方式?

3
你的用户名让我有一种强烈的冲动想要点击踩按钮。 - Joe
感谢您没有屈服于那些邪恶的冲动。保持坚强。 - Ali
3个回答

5
尽管Android应用程序是用Java编写的,但围绕应用程序的框架与封装在小程序周围的框架非常不同。你将无法拥有一个.jar文件,可以将其包含为小程序并投向Android设备,因为它并不适用于这种情况。
然而,您可能能够创建所有游戏逻辑和对象,并将它们与小程序代码和Android应用程序共享。您甚至可以将它们放在一个存储库和项目中,虽然这可能必须是一个Android项目,然后您再将其嵌入到应用构建脚本中。
为了解决游戏的不同控件问题,您可能需要抽象出输入,并让游戏/级别对象具有诸如userHasPoked(int x,int y)之类的回调,然后让小程序在鼠标单击时调用该方法,Android应用程序在触摸时调用该方法(它仍然被奇怪地称为onClick)。
我认为这会是一条漫长的道路,但比重新编写整个应用程序容易得多。虽然一开始似乎需要更多的工作,但是一旦您将代码嵌入小程序和Android应用程序中,您可能“永远”不需要再次接触该代码,并且可以继续添加游戏内容。
我不会低估这项任务,但听起来像是一项非常有趣的编程练习。祝你好运!

谢谢。所以我需要编写的唯一新代码就是实际的事件处理程序,而Android和Java的部署过程会略有不同?或者说除了Web和Android之外,我还需要以不同的方式重写其他部分的代码吗? - Ali
@ClickUpvote:“所以我需要编写的唯一新代码就是实际的事件处理程序”——不,新代码将是“整个UI”。 “部署过程在Android和Java上略有不同”——我会描述为“根本不同”或“非常不同”。我仍然惊讶于在这个时代还有人甚至运行小程序,更不用说编写它们了。 - CommonsWare
@CommonsWare那你认为在浏览器和Android上运行Java游戏有更好的方式吗? - Ali
@ClickUpvote:我对“在浏览器中运行Java游戏”的全部优点表示怀疑。我所见过的在Web浏览器中玩的游戏通常是用Flash或HTML/JavaScript实现的。除了小程序和ActiveX控件(以及<blink>标签),在浏览器中已经没有比这更不活跃的东西了。 - CommonsWare
@CommonsWare我没有看到任何理由不把我的游戏也在Web浏览器中运行,为什么要将自己局限于Android。我的问题是,除了小程序之外,还有没有更好的在浏览器中运行Java的方法,例如Java fx或任何更新的技术? - Ali
我还没有花足够的时间研究JavaFX,我认为它应该是Java UI的未来。因此,我认为它并不是取代小程序,而是Swing。此外,如果您拥有一个非常好控制的界面,允许访问游戏所需做的所有事情(所有控件和任何游戏逻辑的接触点),那么您就不必在该界面“下面”重复任何代码。只需编写其小程序实现和Android实现即可。我并不是说这两个实现很小,但我想说的是,您可能只需要编写一次。 - xbakesx

2

你开发什么样的游戏?开发JavaScript游戏可能是更好的选择。

可以使用phonegap(cordova)在安卓设备上安装。


1
让我为您解释一下.... < p > 模型 - 业务逻辑和数据

< p > 视图 - 显示模型输出

< p > 控制器 - 执行操作的地方。

< p > 使用此 MVC 架构的优点是,您可以保持相同的模型不断更改视图

< p > 因此,记住这个想法,您可以将相同的模型用于Web应用和Android应用,然后分别实现彼此的视图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接