在查询中使用tweenlite动画时出现问题。 我想根据变量切换动画方向。 我有一个代表“左”或“右”的变量。当用户在该方向上拖动鼠标时,将设置这些值。我需要更改我的动画,以便根据此变量在正确的方向上进行动画制作。动画基本上翻了一个div。像卡片翻转。需要以某种方式获得旋转值动态。
有什么建议吗?
var tb = false;
if (dirX == "right") {
if (tb == false) {
TweenLite.to($(this).find(".obj"), 1, {
rotationY: -180,
transformStyle: "preserve-3d",
ease: Back.easeOut,
onComplete: function () {
TweenLite.set($(this).find(".obj"), {
rotationY: -180
});
tb = true;
}
});
}
if (tb == true) {
TweenLite.to($(this).find(".obj"), 1, {
rotationY: -360,
transformStyle: "preserve-3d",
ease: Back.easeOut,
onComplete: function () {
TweenLite.set($(this).find(".obj"), {
rotationY: -360
});
tb = false;
}
});
}
}
if (dirX == "left") {
//the opposit
}
答案 0 :(得分:0)
可以使用'+='
或'-='
语法相对于当前位置设置补间。
var prevPos, obj = $('#obj');
TweenLite.set(obj, {rotationX:30, transformOrigin:"middle middle",transformPerspective:500});
var tweenLeft = new TweenLite.to(obj, 1, { rotationY: '+=180', ease: Back.easeOut, paused:true});
var tweenRight = new TweenLite.to(obj, 1, { rotationY: '-=180', ease: Back.easeOut, paused:true});
$('#container').mouseenter(function( e ) {
prevPos = e.clientX;
});
$('#container').mousemove(function( e ) {
if(!tweenLeft.isActive() && !tweenRight.isActive()){
if(prevPos > e.clientX){
tweenRight.restart();
}else if(prevPos < e.clientX){
tweenLeft.restart();
}
}
prevPos = e.clientX;
});
答案 1 :(得分:0)
这是你的小提琴http://jsfiddle.net/Boolean/b6TUf/4/
的工作分叉由于以下原因,您的版本无效。
prevXPos = event.pageX;
的第一个回答中没有设置prevPos = e.clientX;
。这需要在设置方向后帮助跟踪当前方向。dirX
变量。prevXPos = event.pageX;
。希望这会有所帮助:)