【问题标题】:Kivy - Creating A Virtual DpadKivy - 创建一个虚拟 Dpad
【发布时间】:2016-11-29 09:07:55
【问题描述】:

是否可以在 kivy 应用中创建虚拟屏幕 Dpad?我不认为这是可能的,因为 Window 似乎一次只接受一个触摸事件,所以没有办法让 Dpad 和两个操作按钮一起使用(使用画布上的图像,而不是实际的按钮小部件)。

我什至想过让标签接受 Dpad 的触摸,但在标签上绘制 Dpad 的实际图像会导致标签无法捕捉到任何触摸(猜测)。

然后我考虑在角落创建一个较小的窗口,它可能会记录自己的触摸,但我在 kivy 文档中没有看到任何关于使用主窗口创建窗口的内容。

【问题讨论】:

  • 如果我触摸一下呢?那么是否可以同时处理多个触摸?
  • 是的,您可以这样做。 Kivy 基本上可以处理任意数量的同时触摸(在出现任何软件问题之前就受到硬件的限制)——你不需要做任何特别的事情,触摸 api 只是在接收到触摸时传递触摸。
  • 问题是,您将拇指放在 Dpad 上,同时用另一个拇指按下其他按钮。您在 Dpad 上创建的触摸似乎被其他触摸打断了。
  • @chitondihk 那么这只是您的错误实施。每次触摸都会调用on_touch_downon_touch_up,如果触摸被按住并移动,它会调用on_touch_move。做好实现(或在此处粘贴您的代码)。
  • 请记住,我说的是接收所有触摸的窗口......而不是按钮小部件等。

标签: android kivy d-pad


【解决方案1】:

解决了。问题不是我的代码,毫不奇怪,多年来一直在编程。提出逻辑是容易的部分。我的问题是由于对所使用的 API 集缺乏了解而出现的。这就像在一个工具棚里用手锯切割木头,却不知道角落里有一个电动链锯,上面覆盖着木板。

我不知道有一种方法可以“识别”一次触摸,从而将它们分开。现在我可以从下一个触摸中识别出一个触摸,一切看起来都很好。我只需要在我的“Dpad”上工作,直到感觉足够流畅。这部分不是那么容易,因为您希望 Dpad 在屏幕上的正确位置,并且您希望很少移动以改变方向......否则玩家的拇指将在屏幕上滑动,哈哈。以我的经验,我觉得我很快就能做到完美。

Kivy 很棘手,期间。我注意到,如果您不每次都为 touch 分配一个 id 值,那么它自己的 id 将不存在(但确实存在!),这将引发异常。这很奇怪,因为您使用的属性已经在 touch 中退出,那么为什么不为未分配的属性返回“None”呢?

哦,好吧,至少我可以停止把绳子绕在脖子上。 :D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-12
    • 2020-09-03
    • 1970-01-01
    • 2020-01-11
    • 2021-11-27
    • 2015-05-25
    • 2017-03-14
    • 1970-01-01
    相关资源
    最近更新 更多