2016-12-19 3 views
1

На данный момент у меня есть анимация, которая обновляет смещение, а затем выравнивает его в конце, чтобы сбросить следующую анимацию. Я слушаю обновления этой анимации для координации с другой, но она не запускается при обновлении смещения.React Native Animated Listener не запускается при обновлении смещения

imagePosition.addListener(this._animateOther) 

Я ожидаю, что _animateДругое будет срабатывать по мере перемещения моего объекта.

Однако это не вызывает _animateдругой.

this.state.imagePosition.setOffset(update) 

Только когда смещение сливается обратно в значение, оно вызывает _animateПрочее.

this.state.imagePosition.flattenOffset() 

Это ошибка, и есть ли способ прослушивания смещения обновлений?

ответ

0

Ваш _animateOther может быть запущен только при обновлении значения, а не смещении. Вы должны попробовать setValue вместо setOffset.

flattenOffset объединяет значение смещения в базовое значение и сбрасывает смещение до нуля. Внутренний код выглядит следующим образом:

flattenOffset() { 
    this._value += this._offset; 
    this._offset = 0; 
} 

Он обновляет значение анимации, то почему ваш _animateOther срабатывает.

+0

Но вся цель смещения - это то, что я могу продолжать анимацию. ie Пользователь перетаскивает квадрат от (0,0) до (20, 5), поднимает палец, затем перетаскивает квадрат из (20, 5) -> (30,10) Если я обновляю значение каждый раз, квадрат будет заканчиваться на (10,5), когда он сбрасывается на следующей кастрюле. Если я только обновляю смещение и сглажу в конце, я вернусь к правильной (30,10) координате. –

+1

Фокус в том, что вы начинаете перемещать свой квадрат (onResponderGrant in View или onPanResponderGrant в PanResponder), 'setOffet' до анимированного значения и' setValue' до 0, обновлять значение каждый раз, когда вы перемещаете палец (onResponderMove), и flattenOffset, когда вы поднять палец (onResponderRelease). Использование PanResponder? [Вот пример] (https://gist.github.com/octopitus/edcf671ddea4f60b3794099bec304748) – Octopitus

Смежные вопросы