Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Kivy-创建虚拟Dpad_Android_Kivy_D Pad - Fatal编程技术网

Android Kivy-创建虚拟Dpad

Android Kivy-创建虚拟Dpad,android,kivy,d-pad,Android,Kivy,D Pad,是否可以在kivy应用程序中创建虚拟屏幕Dpad?我不认为这是可能的,因为窗口似乎一次只接受一个触摸事件,所以没有办法将Dpad与两个动作按钮一起使用(使用画布上的图像,而不是实际的按钮小部件) 我甚至想过让标签接受Dpad的触摸,但在标签上绘制Dpad的实际图像会导致标签无法捕捉任何触摸(猜测) 然后我考虑在角落里创建一个较小的窗口,它可能会注册自己的触摸,但我在kivy文档中没有看到任何关于使用主窗口创建窗口的内容。解决了这个问题。问题不是我的代码,毫不奇怪,我已经编程多年了。提出逻辑是容易

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

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


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

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

我不知道有一种方法可以“识别”触摸,从而将它们分开。现在我可以识别一次触摸和下一次触摸,一切看起来都很好。我只需要练习我的“Dpad”,直到感觉足够流利为止。这一部分并不容易,因为你需要Dpad在屏幕上的正确位置,并且你需要很少的移动来改变方向……或者玩家的拇指会在屏幕上滑动,哈哈。根据我的经验,我觉得我很快就能把它完美化

基维很狡猾,没错。我注意到,如果您不每次都指定一个id值来触摸,那么id本身将不存在(但它确实存在!),这将引发一个异常。这很奇怪,因为您使用的属性已经存在于touch中,所以为什么不为未分配的属性返回“None”


哦,好吧,至少我可以不再把绳子套在脖子上了D

如果我碰一下怎么办?那么,是否可以同时处理多个触摸?是的,您可以这样做。Kivy基本上可以处理任意数量的同时触摸(在出现任何软件问题之前就受到硬件的限制)-您不必做任何特殊的操作,触摸api只在接收到触摸时传递触摸。问题是,您用另一个拇指按住Dpad,同时用另一个拇指按下其他按钮。您在Dpad上创建的触摸似乎被其他触摸打断。@chitondihk那么这只是您的错误实现。每次触摸都会在向下触摸时调用
,在向上触摸时调用
,如果按住并移动触摸,则会在移动触摸时调用
。做一个好的实现(或者把你的代码粘贴到这里)。记住,我说的是接收所有触摸的窗口…而不是按钮小部件等等。