首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >铬正在合成层而不触发重新油漆。

铬正在合成层而不触发重新油漆。
EN

Stack Overflow用户
提问于 2014-05-09 09:39:27
回答 1查看 2.7K关注 0票数 11

在调试我正在开发的画布库时,我遇到了铬-devtools不断报告每个动画帧的“复合层”和“更新层树”,而没有重新绘制或移动任何对象。

举个例子:

代码语言:javascript
复制
var x = 0;
( function tick( ) {
    window.requestAnimationFrame(tick);
    x++;
}( ) )

这些操作不是时间密集型的(每帧0.005到0.05ms ),但我想知道为什么会发生这种情况。

我脑海中唯一的想法是,铬使用的是类似于:

代码语言:javascript
复制
console.time( "composite layers" );
// do compositing    
for( var i = 0; i < compositedLayers.length; ++i ) {
   // not triggered since compositedLayers.length = 0
   // but takes some time to be checked
   compositedLayers[i].composite();
}
console.timeEnd( "composite layers" );

因此,如果是这样,为什么“油漆”,“重新计算风格”,“布局”,.不是以同样的方式触发吗?

更新:

  • 这种情况发生在Chrome 36/37 (Windows)中。
  • 在Chromium34 (Linux)上,它只显示复合层
  • 其他未经测试的系统

Edit1: --只有在使用requestAnimationFrame时才会发生这种情况。setInterval只显示按预期触发的计时器。

Edit2:完整源代码示例:巴斯丁

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-13 06:05:37

来自https://code.google.com/p/chromium/issues/detail?id=325419

..。即使像素输出到屏幕上没有任何变化,页面也有可能通过删除文档的样式来使整个呈现状态失效。眨眼别无选择,只能在这一点上重新调整风格、中继、油漆和合成。有时,当没有什么有效的改变时,这些步骤可能会被提前公布,但这一点很难确定。

还请参阅排字器线程结构 -似乎rAF触发器在两个排序线程之间的层树同步。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23561325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档