Skip to content

GSAP中文文档 - gsap.quickSetter()

gsap.quickSetter()

gsap.quickSetter() 返回: 函数

详情

如果您发现自己在相同的对象(或一组对象)上多次调用gsap.set(),比如在"mousemove"事件中,您可以通过创建一个quickSetter函数并使用它代替gsap.set()提升性能50% - 250%。将quickSetter视为一个优化过的函数,它与特定目标(或一组目标的)属性绑定,可以直接将数据传递给它,并跳过正常gsap.set()调用中的便利任务,例如:

  • 单位转换和自动添加单位(尽管您可以为quickSetter指定一个单位,该单位将始终附加到您输入的数字)
  • 相对值
  • 基于函数的值
  • "random()" 解析
  • 特定属性的特殊浏览器不一致性解决方案,如SVG元素上的transformOrigin(因此不建议为transformOrigin创建quickSetter)
  • 属性名称别名转换("x"可以用于变换,但"translateX"不行)

提示

注意:不要害怕使用gsap.set(),因为在大多数情况下,您不会注意到通过切换到quickSetter而在现实世界中性能差异,并且gsap.set()提供了许多值得拥有的便利。但在GreenSock,我们是性能狂,所以我们想为性能关键情况下提供一种工具,用于超优化属性设置,在那里您有很多更新正在进行。

结合实用方法创建超强大的函数!

由于它接受单个值,您可以在pipe()之后将quickSetter放在末尾,与其他实用函数结合使用,这些函数对输入的数字执行有用的操作,如限制或捕捉或以某种方式净化值。例如:

javascript
let xSetter = gsap.utils.pipe(
    gsap.utils.clamp(0, 100),    //确保数字在0到100之间
    gsap.utils.snap(5),          //捕捉到5的最近增量
    gsap.quickSetter("#id", "x", "px") //应用它到#id元素的x属性并附加一个"px"单位
);

//然后在稍后...
xSetter(150) //将#el的变换设置为translateX(100px)(限制在100)
xSetter(3)   //将其设置为5px(捕捉)
...

鼠标跟随器演示

如果您正在动画制作,请使用gsap.quickTo()

gsap.quickSetter()旨在立即设置值,但如果您更倾向于动画到新值,可以查看gsap.quickTo()方法。这里有一个使用该方法的鼠标跟随演示:

多值技巧

您可以通过将quickSetter的property设置为**"css",然后以对象形式传入值,来获得CSSPlugin的好处(如相对值,"random()"解析等),并能够将多个**属性应用于DOM元素:

javascript
var boxSet = gsap.quickSetter('#box', 'css')
boxSet({ x: '+=100', y: 'random(-100, 100)' }) //有效!

这种技术也适用于属性(使用"attr"代替):

javascript
var circleSet = gsap.quickSetter('#circle', 'attr')
circleSet({ cx: '+=100', cy: 'random(-100, 100)' }) //有效!

但这种方法不会像使用特定属性如gsap.quickSetter("#box", "x", "px")那样提供同样的性能提升。不过,它仍然比标准的gsap.set()快。

🎉有任何问题,欢迎联系我

WeChat QR Code
WeChat
QQ QR Code
QQ

赣ICP备2023003243号