Я использую react-native-gesture-handler
с Animated
объект react-native
.
Моя проблема в том, что мне нужно выполнить тяжелую задачу в событиях перемещения react-native-gesture-handler
, которых я не могу избежать. Вот почему я хочу использовать тот факт, что я CAN принимаю анимацию с опущенными промежуточными клавишами.
Чтобы добиться этого, я не использую интерполяцию или замедление и т. Д. c, а скорее пытаюсь прыгнуть туда, где находятся координаты xy жестов. Для этой цели я использую метод Animated.ValueXY
setValue
, как видно из приведенного ниже кода. В этом коде часть // unnecessary heavy task
фактически представляет собой симуляцию тяжелой задачи.
Поэтому вопрос в том, как избежать триггеров перемещения с react-native-gesture-handler
если предыдущий триггер перемещения еще не завершен.
Вы можете увидеть код в действии в этой экспозиции .
onSpaceMove(event) {
if (!(this.moveOK)) return;
this.moveOK = false;
// unnecessary heavy task
let a = 0;
for (let i = 1; i < 1000000; i++) {
if (a ** 5 > 123123123123) a = 0;
else a = a + 1;
}
this.spaceAnimatedTranslations.setValue({
x: Math.floor(event.nativeEvent.absoluteX - c_initial_coordinate_left),
y: Math.floor(event.nativeEvent.absoluteY - c_initial_coordinate_top),
});
this.moveOK = true;
}
Примечание1: Если Экспо-закуска очень медленная, вы можете точно настроить выше для l oop, чтобы иметь достаточно медленное перемещение в вашем устройстве.
Примечание2: Пожалуйста, соблюдайте флаг, this.moveOK
, также не решает проблему странным образом.
Примечание 3: useNativeDriver (<Animated.View ... useNativeDriver={true}>...</Animated.View>
) также не улучшил производительность.