React-native-gesture-handler: Как Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ PanGesture Π² ΠΎΠ΄Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Π·Π° Ρ€Π°Π·?

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 29 нояб. 2018  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: software-mansion/react-native-gesture-handler

Π― Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΉ взгляд двигался ΠΏΠΎ оси X ΠΈΠ»ΠΈ Y, Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.
Π£ мСня Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… PanGestureHandler (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ΄ΠΈΠ½, я Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½):

     <PanGestureHandler
        onHandlerStateChange={onGestureEventY}
        onGestureEvent={onGestureEventY}
      >
        <Animated.View style={{ flex: 1 }}>
          <PanGestureHandler
            onHandlerStateChange={onGestureEventX}
            onGestureEvent={onGestureEventX}
          >
              // ....
          </PanGestureHandler>
        </Animated.View>
      </PanGestureHandler>
    );

Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ ΠΏΠΎ X, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Y ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.
Π― просмотрСл эту Ρ‡Π°ΡΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ: https://kmagiera.github.io/react-native-gesture-handler/docs/interactions.html, Π½ΠΎ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ этот Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования.

Как ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ этого Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π°?

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, я нашСл Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ своСй ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ВсС <PanGestureHandlers> Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² <Animated.View> . Π—Π°Ρ‚Π΅ΠΌ я ΠΌΠΎΠ³Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ условия, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² панорамирования Π½Π΅ распознал ТСст. Π‘ΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅.

     <PanGestureHandler
        onHandlerStateChange={onGestureEventX}
        onGestureEvent={onGestureEventX}
        ref={this.horizontalHandler}
        minDist={10}
        failOffsetY={[-10, 10]}
      >
        <Animated.View style={{ flex: 1 }}>
          <PanGestureHandler
            waitFor={this.horizontalHandler}
            onHandlerStateChange={onGestureEventY}
            onGestureEvent={onGestureEventY}
          >
            <Animated.View style={{ flex: 1 }}>
         //...
            </Animated.View>
          </PanGestureHandler>
        </Animated.View>
      </PanGestureHandler>

ВсС 4 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, я нашСл Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ своСй ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ВсС <PanGestureHandlers> Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² <Animated.View> . Π—Π°Ρ‚Π΅ΠΌ я ΠΌΠΎΠ³Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ условия, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² панорамирования Π½Π΅ распознал ТСст. Π‘ΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅.

     <PanGestureHandler
        onHandlerStateChange={onGestureEventX}
        onGestureEvent={onGestureEventX}
        ref={this.horizontalHandler}
        minDist={10}
        failOffsetY={[-10, 10]}
      >
        <Animated.View style={{ flex: 1 }}>
          <PanGestureHandler
            waitFor={this.horizontalHandler}
            onHandlerStateChange={onGestureEventY}
            onGestureEvent={onGestureEventY}
          >
            <Animated.View style={{ flex: 1 }}>
         //...
            </Animated.View>
          </PanGestureHandler>
        </Animated.View>
      </PanGestureHandler>

@wcandillon Π²Ρ‹ случайно пСрСкусили?

Π£ мСня Π΅ΡΡ‚ΡŒ эта вСрсия, которая, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ: https://github.com/wcandillon/can-it-be-done-in-react-native/blob/f605d034d414a70884eff95414072030f5598410/flutter-animations/components/Sections.js

Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с использованиСм Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… рСспондСнтов Pan Π½Π΅ сработал для мСня. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ слишком Π³Π»ΡŽΡ‡Π½ΠΎ. Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я сдСлал вмСсто этого. Π― взял ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ translateDirection, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π» Π΅Π΅ Π±Π΅Π· направлСния -1. А ΠΊΠΎΠ³Π΄Π° состояниС Π±Ρ‹Π»ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΠ»ΠΎΡΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π²ΠΈΠ΄, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простого сравнСния translation.y ΠΈ translation.x. Π—Π°Ρ‚Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ установлСно, я мСняю Ρ‚ΠΎΠ»ΡŒΠΊΠΎ translateX ΠΈΠ»ΠΈ translateY Π² зависимости ΠΎΡ‚ направлСния:
`cond (eq (state, State.ACTIVE), [

    cond(
      eq(translateDirection, -1),
      cond(
        greaterThan(translation.y, translation.x),
        set(translateDirection, 2),
        set(translateDirection, 1)
      )
    ),
    cond(
      neq(translateDirection, -1),
      cond(
        eq(translateDirection, 1),
        set(translateX, add(offsetX, translation.x)),
        set(translateY, translation.y)
      )
    ),
  ]),`
Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

rgangopadhya picture rgangopadhya  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

chrisdrackett picture chrisdrackett  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

TerrerSandman picture TerrerSandman  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

brunolemos picture brunolemos  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

tallen11 picture tallen11  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ