Wie man svg-animation mit Animierten in reagieren-native

ReactNative:

<ScrollView style={styles.container}>
    <Svg
      height="100"
      width="100">
        <Circle
          cx="50"
          cy="50"
          r="50"
          stroke="blue"
          strokeWidth="2.5"
          fill="green"/>
      </Svg>
</ScrollView>

Ich will Kreis-Skala mit Animiert.Wert. Ich habe dies ausprobiert :

    let AnimatedScrollView = Animated.createAnimatedComponent(ScrollView);
    let AnimatedCircle = Animated.createAnimatedComponent(Circle);

    <ScrollView style={styles.container}>
            <Svg
              height="100"
              width="100">
                <AnimatedCircle
                  cx="50"
                  cy="50"
                  r={this.state.animator}
                  stroke="blue"
                  strokeWidth="2.5"
                  fill="green"/>
              </Svg>
        </ScrollView>

Dann flash zurück mit kein Fehler.

Wie kann ich tun?


update 2016.8.24

Ich eine neue Methode gefunden, statt requestAnimationFrame :

Konstruktor:

this.state = {
      animator: new Animated.Value(0),
      radius: 1,
    };

    this.state.animator.addListener((p) => {
      this.setState({
        radius: p.value,
      });
    });

render:

<Circle
    cx="50"
    cy="50"
    r={this.state.radius}
    stroke="blue"
    strokeWidth="2.5"
    fill="green"/>

Aber hier die guides Rat gibt, verwenden Sie es sparsam, da es möglicherweise Auswirkungen auf die Leistung in der Zukunft.

also, was ist der beste Weg ?

  • Ich habe versucht, diesen Ansatz, aber der Hörer wurde nie genannt. Ich bin mit Reagieren.createClass().
  • Haben Sie jemals finden eine gute Lösung für diese, die sich nicht um die Aktualisierung der Staat mit dem Hörer? Danke!
  • Gefunden eine ideale Lösung, macht Gebrauch von Ihrem addListener aber ersetzt setState mit setNativeProps machen Sie viel performant.
  • Welches Paket verwenden Sie zum Rendern von SVG-Grafiken in RN?
  • Könntest du nicht einfach verwenden Transformation: [{ Skala: animatedValue }] auf die Animierte.Anzeigen um ihn herum? Vielleicht bin ich falsch.
InformationsquelleAutor CoderLim | 2016-08-23
Schreibe einen Kommentar