javascript - 使用 GSAP 和 ScrollMagic 的性能问题

标签 javascript svg gsap scrollmagic

我目前正在使用 GSAP 的 TimelineMax、MorphSVG 插件和 ScrollMagic 构建一个网站。

我有时会遇到抖动效果,并出现此警告:

由于主线程繁忙,“鼠标滚轮”输入事件的处理延迟了 163 毫秒。考虑将事件处理程序标记为“被动”以使页面更具响应性。

我有 1 个 ScrollMagic Controller 和 4 个附加场景。

我的主要性能问题似乎与 ScrollMagic 无关,因为它是在鼠标轮 svg 变形上,而我在没有它的情况下这样做:

// GSAP Morph tween
self.tl.to(".chapter1 #assembled .logo", 2, {morphSVG:"#exploded .logo", fill: '#18c5a3'})
.from(".chapter1 #assembled .logo", 1, {opacity: 1})
.to(".chapter1 #assembled .logo", 1, {opacity: 0})

// Progress the tween on mousewheel
function handleUnbuild () {
    self.tl.progress(window.pageYOffset/500).pause()
}
window.addEventListener('mousewheel', handleUnbuild, {passive: true})

如果没有 ScrollMagic,我尝试将此补间附加到 SM 场景,但我不知道该怎么做。

请注意,我的主屏幕(Macbook pro 13")上的动画抖动,但在我的第二个更宽的屏幕上却很好,这太奇怪了。

最佳答案

查看 lodash throttle documentation ,该示例正是您所需要的(下划线相同)。它将防止事件触发太多次。我想您也可以在 handleUnbuild() 中使用 RAF。

事实上,它只发生在你的 MBP 上,这可能与性能有关(因为我猜你的第二个屏幕不是 Retina)。

关于javascript - 使用 GSAP 和 ScrollMagic 的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39252431/

相关文章:

javascript - Jquery 如何使用变量作为 .change() 函数的标识符?

javascript - JQuery 宽度和高度不适用于 firefox 中的 svg

animation - 基于 SVG 帧的动画

javascript - 使用 tweenlite 被动补间属性

javascript - Bootstrap-datetimepicker 选择过去几个月

javascript - 如何勾选每组checkbox至少勾选一个

javascript 数组原型(prototype) - 添加了新方法 - 奇怪的 console.log

css - svg滤镜阴影路径修复

javascript - 在鼠标滚动上动画 TweenMax 幻灯片

javascript - Flexbox父级的动画宽度不会影响子级?