如何将对象作为时间的函数移动React-Native
?
在本机iOS中,我这样做:
CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(tick:)];
[link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
或者,我如何跟踪屏幕渲染React-Native
?
如何将对象作为时间的函数移动React-Native
?
在本机iOS中,我这样做:
CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(tick:)];
[link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
或者,我如何跟踪屏幕渲染React-Native
?
Reactive nativeCADisplayLink
在内部使用在 JS 线程上执行帧更新。所以理论上你所做的一切都是与屏幕的刷新率同步的。
您可以使用Animated库(或者如果您希望通过拖动来移动对象,也可以使用PanResponder),您可以达到 60fps。
如果这仍然不能满足您的需求,您始终可以创建一个新的本机组件并使用您自己的显示计时器进行自己的渲染。
也许这些计时器功能会有所帮助......
requestAnimationFrame(fn) 与 setTimeout(fn, 0) 不同——前者将在所有帧刷新后触发,而后者将尽快触发(在 iPhone 5S 上每秒超过 1000 倍)。
setImmediate 在当前 JavaScript 执行块的末尾执行,就在将批处理响应发送回本机之前。请注意,如果您在 setImmediate 回调中调用 setImmediate,它将立即执行,不会在两者之间返回到 native。
Promise 实现使用 setImmediate 作为其异步原语。
参考:https ://facebook.github.io/react-native/docs/timers.html