3

如何将对象作为时间的函数移动React-Native

在本机iOS中,我这样做:

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

或者,我如何跟踪屏幕渲染React-Native

4

2 回答 2

2

Reactive nativeCADisplayLink在内部使用在 JS 线程上执行帧更新。所以理论上你所做的一切都是与屏幕的刷新率同步的。

您可以使用Animated库(或者如果您希望通过拖动来移动对象,也可以使用PanResponder),您可以达到 60fps。

如果这仍然不能满足您的需求,您始终可以创建一个新的本机组件并使用您自己的显示计时器进行自己的渲染。

于 2015-10-31T23:25:30.403 回答
-1

也许这些计时器功能会有所帮助......

计时器

  • 设置超时,清除超时
  • 设置间隔,清除间隔
  • setImmediate, clearImmediate
  • requestAnimationFrame,cancelAnimationFrame

requestAnimationFrame(fn) 与 setTimeout(fn, 0) 不同——前者将在所有帧刷新后触发,而后者将尽快触发(在 iPhone 5S 上每秒超过 1000 倍)。

setImmediate 在当前 JavaScript 执行块的末尾执行,就在将批处理响应发送回本机之前。请注意,如果您在 setImmediate 回调中调用 setImmediate,它将立即执行,不会在两者之间返回到 native。

Promise 实现使用 setImmediate 作为其异步原语。

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

于 2015-10-31T17:29:49.160 回答