2016-11-21 1 views
0

Pour différentes raisons, j'essaie de reproduire le comportement de panoramique d'une vue de défilement. J'utilise Animated.decay dans mon PanResponder, mais j'ai besoin de serrer les valeurs entre 0 et la taille de mon contenu afin qu'il ne sorte pas des limitesRéagissez les valeurs de pince Animated.decay natives

J'ai utilisé Animated.diffClamp pour le faire, mais il ne saisit pas exactement les valeurs de AnimatedValue, il crée juste un nouveau AnimatedValue serré à partir de cette valeur.

La meilleure solution pour moi serait d'être en mesure de préciser les limites dans la configuration Animated.decay, tels que:

Animated.decay(this.state.animatedPos, { 
    velocity: {vx: vx, vy: vy}, 
    bounds: [0, viewWidth, 0, viewHeight] 
}).start(); 

Mais je ne vois pas quelque chose comme ça dans le doc. Quel serait le meilleur moyen d'y parvenir?

Merci!

Répondre

1

C'est le point. Le nouveau AnimatedValue verrouillé est ce que vous utilisez pour bloquer les choses. Je suggère que this.state.animatedPos serait typiquement utilisé pour des événements tactiles et la Animated.decay, et le AnimatedValue pincé pour l'interpolation, le style etc ...

+0

Oui, mais je voudrais être en mesure d'ajouter un écouteur au AnimatedValue pincé donc je peux obtenir la vraie valeur utilisée, et cela ne semble pas possible ... On dit que 'addListener' est indéfini –

+0

disons' temp = Animated.diffClamp (this.state.animatedPos, 0,100) 'then' temp .__ getValue() 'obtient la valeur –

+0

Ok, je suppose que je n'ai pas compris que diffClamp utilisait en fait un diff avec la dernière valeur pour que la valeur change lorsque vous vous rapprochez des limites ... D'où la raison étrange quand je réinitialisais les valeurs de animatedPos à 0. Merci –