gpt4 book ai didi

android - 随时可能发生的事件的一段代码放在哪里?

转载 作者:搜寻专家 更新时间:2023-11-01 09:11:06 24 4
gpt4 key购买 nike

我正在 Android 中开发一个简单的游戏,我想检测两个 Sprite 之间的碰撞并删除它们,我知道代码会怎样,但我不知道(在什么情况下)我会在哪里把它... Sprite 在屏幕上移动,所以这个“事件”可以随时发生,而不仅仅是 onTouchEvent 或类似的事情。

我刚关注完this tutorial,在那里你可以找到所有的代码。现在我正在努力改变它。基本上我试图区分 2 种类型的 Sprite (坏的和好的),如果一个坏的 Sprite 接触到一个好的 Sprite ,那么好的 Sprite 就会死。

最佳答案

实际上@Nammari 是对的,您的引擎中可能有一个移动 Sprite 的循环,引擎可以模拟微转:所有 Sprite 都以它们的速度移动。

在此循环中,您只需测试碰撞并移除不必要的 Sprite 。

所有这些都应该发生在与 Activity 本身分开的类中。

不过,如果您想告诉您的 Activity (您的 View )发生了一些碰撞(例如增加碰撞计数器,使屏幕闪烁,等等),您的问题也有更深的兴趣。

好吧,这不是一个明显的问题,实际上想知道如何以简洁明了的方式做到这一点是个好主意。

最好的答案是您将进入一个新世界:软件架构。 ;) 是的,这不再是关于“编码”,而是关于简洁的方法(还有美和艺术,但实际上这可能是一个更哲学的问题)。

在这种情况下,您应该做的是建立一个可观察的观察者设计模式:

  • 您的游戏引擎(负责移动 Sprite 的类,了解“规则”)必须成为事件源
  • 你应该为你的“游戏监听器”定义一个接口(interface),在这一步,它可以有一个单一的方法:检测到碰撞。
  • 您的引擎应该有一个监听器列表,具有强大的封装和两个用于添加和删除监听器的公共(public)方法。
  • 它还应该有一些私有(private)/ protected 方法来触发事件:它循环遍历所有已注册的监听器并调用它们的“检测到碰撞”方法。
  • 然后在您的 View 中创建一个小的内部类,实现监听器接口(interface)。在引擎中实例化并注册它。

这是基本的想法。 Here是一个很好的介绍性示例。

关于android - 随时可能发生的事件的一段代码放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8285691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com