如何在PanResponder中使用onPanResponderMove防止崩溃?

时间:2019-04-06 12:30:40

标签: react-native

我正在创建一个游戏,我需要跟踪用户的触摸事件,以查看他/她是否越过物体并做某事。 我在PanResponder中使用了onPanResponderMove,并且用户一直在移动手指的过程中,我一直调用一个函数并检查用户的移动,并且效果很好。 但是如果用户长时间移动手指会导致应用程序崩溃,并且会发生“超出最大调用堆栈大小”之类的事情。

我想知道我是否在做正确的方法? 因为似乎我用了很多公羊,这会导致问题并崩溃。

这是我的代码:

componentWillMount() {    
    let strings = 'a,b,c,d|s,d,f,g|h,b,a,u|m,l,k,o';
    let arrayST = strings.split("|");
    for (i = 0; i < arrayST.length; i++) {
      arrayST[i] = arrayST[i].split(",");
    }
    this.initBoxes(arrayST)

    this._panResponder = PanResponder.create({
      onMoveShouldSetPanResponder: (evt, gestureState) => true,
      onPanResponderGrant: (evt) => {
        this.setState({
          userAnswer: [],
          userAnswerWords: [],
          answerd: false,
        });
      },
      onPanResponderMove: (evt, gestureState) => {
        const drag = this.getDirectionAndColor(gestureState);
        if (drag != 'No') {
          this.setState({
            findState: 'Proccessing',
          });
        }
      },
      onPanResponderTerminationRequest: (evt, gestureState) => true,
      onPanResponderRelease: (evt, gestureState) => {
        this.setState({
          findState: 'Finished',
          answerd: true,
          answerCordinate: '',
        });
        if (this.state.userAnswer.join(',') != this.state.correctAnswer) {
          for (let l = 0; l < 16; l++) {
            this.setState(state => {
              state.boxes[l].bgColor = 'transparent'
              return state
            })
          }
        }
      },
    });
  }

我一直在调用getDirectionAndColor函数。 请帮我提供您的建议。

谢谢。

0 个答案:

没有答案