Skip to Content
React Native18. Mini-jeuxT10. Animations & gestes

Terrain 10 — Animations & gestes

9 drills · ~10 min · Chapitres liés : Partie 10

1. Pourquoi les animations Reanimated restent fluides quand le thread JS est occupé ?

Les worklets (styles animés, gestes) s’exécutent sur le thread UI : l’animation vit côté natif, insensible au JS. C’est l’idée de rupture vs l’ancien Animated.

2. Écrivez le duo minimal : un bouton qui scale à 0,96 au pressIn (spring) et revient.

const scale = useSharedValue(1) const style = useAnimatedStyle(() => ({ transform: [{ scale: scale.value }] })) // onPressIn: scale.value = withSpring(0.96) · onPressOut: withSpring(1)

3. timing vs spring : la règle de choix ?

Quantités (progression, opacité, fondu) → timing (durée+easing). Objets (boutons, cartes, déplacements) → spring (physique, interruptible).

4. Appeler router.push à la FIN d’une animation : le code exact ?

opacity.value = withTiming(0, { duration: 250 }, f => { if (f) runOnJS(goToResults)() })

Le callback est un worklet → runOnJS obligatoire pour rappeler React.

5. <Text>{sharedValue.value}</Text> : le problème ?

Affichage figé : la valeur vit côté UI, React n’est pas notifié de ses mutations. Afficher via useAnimatedProps/ReText, ou dériver un état React.

6. L’anneau du timer : quelle prop SVG est animée, avec quel hook ?

strokeDashoffset (dasharray = circonférence : offset 0 = plein, circonférence = vide), via useAnimatedProps + Animated.createAnimatedComponent(Circle).

7. L’explication qui apparaît après une réponse : l’outil le plus simple ?

Une Layout Animation : entering={FadeInDown.duration(220)} (+ exiting) — une prop, zéro shared value.

8. Les trois temps d’un Gesture.Pan, de tête ?

onBegin : mémoriser (start = offset courant) → onChange : suivre (start + translationX) → onEnd : décider (seuil → action, sinon withSpring(0, { velocity })).

9. Le swipe-to-delete cohabite avec le scroll de la liste grâce à… ?

activeOffsetX([-10, 10]) : le Pan ne capture qu’après 10 px HORIZONTAUX — en deçà, la FlatList scrolle. (Et toute suppression au geste exige son toast « Annuler ».)


👉 Terrain suivant : 11 — Builds & commandes