TweenMax 无法正确初始化:“未捕获无法补间空目标。”
在我的应用中,我尝试使用 GSAP 的 TweenMax/TimelineMax 库 来为更改添加动画效果,但我的代码中出现了早期错误。简化(这是一个使用 ES6 的 React/Redux 应用):
import TimelineMax from 'gsap';
import TweenMax from 'gsap';
import GSAP from 'gsap-react-plugin';
import ReactDOM from 'react-dom';
someFunction() {
var mailboxDropdown = ReactDOM.findDOMNode( this.refs.mailboxDropdown );
// TweenLite.to(this, 0.1, { "y-offset": '-50px', 'opacity' : 0 });
console.log(mailboxDropdown)
var tl = new TimelineMax();
console.log('here');
tl.to(mailboxDropdown, 0.4, { "y-offset": '-50px' }, 'slideUp' )
tl.to(mailboxDropdown, 1, { opacity: 0 }, 'slideUp-=.5');
};
错误很奇怪。首先,如果我不使用对象(例如
new TimelineMax({repeat: 1})
)初始化 TimelineMax(尽管文档说其默认构造函数参数为
null
),它甚至在到达
console.log('here')
之前就会抛出错误。
Uncaught Cannot tween a null target.
如果我
确实
使用对象初始化它,如上一句所述,则在尝试调用
tl.to
时会出错。具体来说:
Uncaught TypeError: tl.to is not a function
即使
to
在文档中
肯定
存在。
tl
对象似乎是
TweenMax
对象:
TweenMax {vars: Object, _totalDuration: 0, _duration: 0, _delay: 0, _timeScale: 1…}
但它对大多数方法没有响应,包括
add
和许多其他方法。
知道这是怎么回事吗?这对我来说非常令人困惑,因为所有文档/教程似乎都表明我所做的一切正常,并且所有相关对象(
mailboxDropdown
等)似乎都定义正确。
在发布此问题之前(经过大量搜索和盲目实验),我发现问题实际上与导入有关。我不确定
为什么
,但删除
TimelineMax
导入解决了问题,因此原始代码中的所有内容都可以正常工作。也就是说,我的导入应该是这样的:
import TweenMax from 'gsap';
import GSAP from 'gsap-react-plugin';
import ReactDOM from 'react-dom';
不是这样的:
import TimelineMax from 'gsap';
import TweenMax from 'gsap';
import GSAP from 'gsap-react-plugin';
import ReactDOM from 'react-dom';
某种命名空间冲突/覆盖?
从“gsap/TimelineMax”导入 TimelineMax; 成功了
根据 Greensock NPM 文档 ,您可以使用括号表示法指定单独的导出:
import {TimelineMax, TweenMax} from 'gsap'