我正在创建一个游戏,我需要跟踪用户的触摸事件,以查看他/她是否越过物体并做某事。 我在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函数。 请帮我提供您的建议。
谢谢。