对于触摸事件,我知道触摸屏幕时会触发on_touch_down,触摸位置发生变化时触发on_touch_move,触摸释放时触发on_touch_up但触摸激活时需要调用函数,包括当触摸位置没有改变时。例如,使用按钮我只是将一个功能绑定到按钮的状态,这样当按钮状态为" down"该函数被调用。我可以用触摸事件做类似的事情吗?
使用button.state:
的示例from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.properties import ObjectProperty
from kivy.lang import Builder
from kivy.clock import Clock
Builder.load_string("""
<ButtonR>
size:self.size
pos:self.pos
<RootWidget>
button1:button1
button2:button2
ButtonR:
id:button1
text:"press button to move"
size_hint:0.2,0.2
pos:0,0
ButtonR:
id:button2
text:"press screen and move"
size_hint:0.2,0.2
pos:0,200
""")
class ButtonR(Button):
def move(self):
self.center_x+=1
class RootWidget(FloatLayout):
button1=ObjectProperty(None)
button2=ObjectProperty(None)
def update(self,dt):
#Bottom button only moves if clicked on
if self.button1.state=="down":
self.button1.move()
def on_touch_move(self,touch):
#Top button moves only when touch event moves position
self.button2.move()
class MyApp(App):
def build(self):
app=RootWidget()
Clock.schedule_interval(app.update,1.0/60)
return app
if __name__=="__main__":
MyApp().run()
答案 0 :(得分:0)
但我需要在触摸激活时调用一个函数,包括触摸位置不变时
当您收到on_touch_down
时触摸会变为活动状态,并且在为同一触摸调用on_touch_up
时该触摸不再处于活动状态。无论你想要什么逻辑,你都可以通过这些来打电话。
当按钮状态为“向下”时,该函数被称为
我不知道你的意思 - 如果你只是想在触摸发生时调用一个函数,请使用on_touch_down
。
如果您想以触摸存在的方式调用函数,只需存储当前触摸列表(您可以在获得on_touch_down
时添加该列表,并在获得on_touch_up
时删除并随心所欲地使用它。