3

オブジェクトを時間の関数として移動するにはどうすればよいReact-Nativeですか?

ネイティブ iOS では、次のようにします。

CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(tick:)];
[link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];

または、 で画面のレンダリングを追跡するにはどうすればよいReact-Nativeですか?

4

2 に答える 2

2

リアクティブ ネイティブはCADisplayLink内部的に使用して、JS スレッドでフレームの更新を実行します。したがって、理論的には、すべての操作は画面のリフレッシュ レートと同期しています。

Animatedライブラリ (オブジェクトをドラッグして移動する場合はPanResponder ) を使用すると、60fps に到達できます。

これでもニーズが満たされない場合は、いつでも新しいネイティブ コンポーネントを作成し、独自の表示タイマーを使用して独自のレンダリングを行うことができます。

于 2015-10-31T23:25:30.403 に答える
-1

おそらく、これらのタイマー機能が役立つでしょう...

タイマー

  • setTimeout、clearTimeout
  • setInterval、clearInterval
  • setImmediate、clearImmediate
  • requestAnimationFrame、cancelAnimationFrame

requestAnimationFrame(fn) は setTimeout(fn, 0) と同じではありません。前者はすべてのフレームがフラッシュされた後に起動しますが、後者はできるだけ早く起動します (iPhone 5S では 1 秒あたり 1000x 以上)。

setImmediate は、現在の JavaScript 実行ブロックの最後で、バッチ処理された応答をネイティブに返す直前に実行されます。setImmediate コールバック内で setImmediate を呼び出すと、すぐに実行され、途中でネイティブに戻らないことに注意してください。

Promise の実装では、非同期プリミティブとして setImmediate を使用します。

参考:https ://facebook.github.io/react-native/docs/timers.html

于 2015-10-31T17:29:49.160 に答える