|
@@ -3,24 +3,38 @@ from .element import Element
|
|
|
|
|
|
class JoystickView(CustomView):
|
|
class JoystickView(CustomView):
|
|
|
|
|
|
- def __init__(self, on_move, **options):
|
|
|
|
-
|
|
|
|
- self.on_move = on_move
|
|
|
|
|
|
+ def __init__(self, on_start, on_move, on_end, **options):
|
|
|
|
|
|
super().__init__('joystick', __file__, [
|
|
super().__init__('joystick', __file__, [
|
|
'https://cdn.jsdelivr.net/npm/nipplejs@0.9.0/dist/nipplejs.min.js',
|
|
'https://cdn.jsdelivr.net/npm/nipplejs@0.9.0/dist/nipplejs.min.js',
|
|
], **options)
|
|
], **options)
|
|
|
|
|
|
- self.allowed_events = ['onMove']
|
|
|
|
|
|
+ self.on_start = on_start
|
|
|
|
+ self.on_move = on_move
|
|
|
|
+ self.on_end = on_end
|
|
|
|
+ self.allowed_events = ['onStart', 'onMove', 'onEnd']
|
|
|
|
+ self.initialize(temp=False,
|
|
|
|
+ onStart=self.handle_start,
|
|
|
|
+ onMove=self.handle_move,
|
|
|
|
+ onEnd=self.handle_end)
|
|
|
|
+
|
|
|
|
+ def handle_start(self, msg):
|
|
|
|
|
|
- self.initialize(temp=False, onMove=self.handle_move)
|
|
|
|
|
|
+ if self.on_start is not None:
|
|
|
|
+ self.on_start(msg)
|
|
|
|
|
|
def handle_move(self, msg):
|
|
def handle_move(self, msg):
|
|
|
|
|
|
- self.on_move(msg.data)
|
|
|
|
|
|
+ if self.on_move is not None:
|
|
|
|
+ self.on_move(msg)
|
|
|
|
+
|
|
|
|
+ def handle_end(self, msg):
|
|
|
|
+
|
|
|
|
+ if self.on_end is not None:
|
|
|
|
+ self.on_end(msg)
|
|
|
|
|
|
class Joystick(Element):
|
|
class Joystick(Element):
|
|
|
|
|
|
- def __init__(self, *, on_move, **options):
|
|
|
|
|
|
+ def __init__(self, *, on_start=None, on_move=None, on_end=None, **options):
|
|
|
|
|
|
- super().__init__(JoystickView(on_move, **options))
|
|
|
|
|
|
+ super().__init__(JoystickView(on_start, on_move, on_end, **options))
|