【发布时间】:2017-03-03 21:41:02
【问题描述】:
我正在尝试使用 gsap 制作时钟动画。问题是我的实际脚本并不精确。我需要的是:
- 按下按钮
- 开始动画(整小时旋转)
- 然后再次按下按钮停止等待 2 秒并继续这样做
- 只需开始 -> 旋转 -> 停止(2 秒延迟) -> 重复
我的实际解决方案无法正常工作,因为一段时间后它不会在 12 小时内停止分针(可能是因为 setInterval 或 setTimeout 不那么准确,所以它会自行去同步。
我如何通过适当的解决方案来解决这个问题。也许时间线内的时间线不知何故?
实际脚本:
var gsapClock = (function ($) {
var s;
return {
settings: {
$minuteHand: $('#minute-hand'),
$hourHand: $('#hour-hand'),
$buttonTop: $('#button-top')
},
init:function () {
s = this.settings;
this.bindUIActions();
},
bindUIActions: function () {
var tl = new TimelineMax();
function buttonPress(){
TweenMax.to(s.$buttonTop, .1, {
y: 4
});
TweenMax.to(s.$buttonTop, .1, {
y: 0,
delay: .1
})
}
tl.add(
TweenMax.to(s.$minuteHand, 2, {rotation: "360", repeat: -1, ease: Power0.easeNone, transformOrigin: '50% 100%'}),
TweenMax.to(s.$hourHand, 48, {rotation: "360", repeat: -1, ease: Power0.easeNone, transformOrigin: '0% 50%'})
);
tl.pause();
function animationControll() {
buttonPress();
tl.resume();
setTimeout(function() {
buttonPress();
tl.pause();
}, 2000);
}
animationControll();
setInterval(function() {
animationControll();
}, 3500);
}
}
})(jQuery);
gsapClock.init();
【问题讨论】:
标签: javascript jquery animation timeline gsap