【问题标题】:How to implement a drag and tap at same time如何同时实现拖动和点击
【发布时间】:2019-08-05 15:58:26
【问题描述】:

我正在使用 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);

【问题讨论】:

    标签: flutter dart uigesturerecognizer flame


    【解决方案1】:

    不要使用 GestureRecognizers,而是直接在您的游戏类上使用 PanDetectorTapDetector 混合并覆盖您需要的方法。

    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() {}
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-10
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      相关资源
      最近更新 更多