Как реализовать одновременное перетаскивание и нажатие

Я делаю флаттер-игру с Flame, и у меня проблема с реализацией контроллеров. Контроллеры в основном представляют собой джойстик и кнопку атаки. Для джойстика мне нужны жесты panStart, panUpdate и panEnd, а также для кнопки атаки onTapUp и onTapDown. Но я не могу делать то и другое одновременно, только жест одновременно

MultiTapGestureRecognizer tapper = MultiTapGestureRecognizer();
PanGestureRecognizer panGesture = PanGestureRecognizer();

panGesture.onEnd = game.onPanEnd;
panGesture.onUpdate = game.onPanUpdate;
panGesture.onStart = game.onPanStart;
panGesture.onCancel = game.onPanCancel;
tapper.onTapDown = game.onTapDown;
tapper.onTapUp = game.onTapUp;
tapper.onTapCancel = game.onTapCancel;
flameUtil.addGestureRecognizer(tapper);
flameUtil.addGestureRecognizer(panGesture);

1 ответ

Вместо использования GestureRecognizers используйте PanDetector а также TapDetector миксины непосредственно в вашем игровом классе и переопределите необходимые вам методы.

class MyGame extends BaseGame with TapDetector, PanDetector {

  MyGame();

  @override
  void onTap() {}

  @override
  void onTapCancel() {}

  @override
  void onTapDown(TapDownDetails details) {}

  @override
  void onTapUp(TapUpDetails details) {}

  @override
  void onPanDown(DragDownDetails details) {}

  @override
  void onPanStart(DragStartDetails details) {}

  @override
  void onPanUpdate(DragUpdateDetails details) {}

  @override
  void onPanEnd(DragEndDetails details) {}

  @override
  void onPanCancel() {}
}
Другие вопросы по тегам