这是一个为弹跳方块设置动画的脚本:
var count = 1,
tM = new TimelineLite(),
element = $('#boxy');
function log(){
console.log('just bounced');
element.html('I\'ve bounced: ' + count + ' times!');
count++;
}
tM.from( element, 2, { top:'-=60px', ease: Linear.easeNone, repeat: -1, onRepeat: log() }, 0 );
但是,onRepeat
选项的行为并不像我期望的那样。不是每次动画重复时触发日志功能,而是在动画第一次启动时运行一次。
它的行为与onStart
选项完全相同。为什么会这样?我怎样才能计算div无数次被反弹的次数?
答案 0 :(得分:2)
您在使用log
定义补间时正在运行log()
功能,并将log
的返回值分配给onRepeat
(其中是undefined
,因为你没有返回任何东西)。您希望将onRepeat
var分配给log
函数
变化
onRepeat: log()
到
onRepeat: log
您可以在行动here.
中看到这一点答案 1 :(得分:0)
onRepeatParams: ['as','many','parameters','as',1,true,'ly','wants'];
我还认为访问应用时间轴的元素的最有效方法是使用self关键字,如下所示:
onRepeatParams: ["{self}"];
然后在执行此操作的函数中:
$(element.target).html('I\'ve bounced: ' + count + ' times!');
这就是我在上下文中的意思:
var count = 1,
tM = new TimelineLite(),
element = $('#boxy');
function log(element){
console.log('just bounced');
$(element.target).html('I\'ve bounced: ' + count + ' times!');
count++;
}
tM.from( element, 2, { top:'-=60px', ease: Linear.easeNone, repeat: -1, onRepeat: log, onRepeatParams: ["{self}"] }, 0 );