0

我有这段代码旋转图像然后移动它-除非图像不旋转,否则效果很好-这意味着图像的当前角度等于它应该旋转到的角度-在这种情况下,不调用回调函数,所以没有动画。旋转功能来自插件。

$("#Ship" + shipID).rotate({
                    duration: 500,
                    angle: $(this).getRotateAngle(),
                    animateTo: parseInt(rotate),
                    callback: function () {
                        $("#" + shipID).animate({
                            left: parseInt(moveX),
                            top: parseInt(moveY)
                        }, 500, function () {                            
                        });    
                    }
                })

如果动画函数是在旋转之后编写的 - 那么旋转和动画同时发生。

我不认为我可以强制回调,因为我必须编辑插件(但我不确定)。有没有办法在旋转后编写动画,但等待旋转完成?我想一种方法是使用延迟,但有更合适的方法吗?

4

1 回答 1

1

在尝试使用插件执行任何操作之前,您必须检查旋转。我不确定您将如何检查当前轮换,但是:

var currentRotation = $("#Ship" + shipID).getRotateAngle();
if(currentRotation != rotate) {
    $("#Ship" + shipID).rotate({
        duration: 500,
        angle: $(this).getRotateAngle(),
        animateTo: parseInt(rotate),
        callback: function () {
            $(this).rotate({
                animateTo: rotate
            });
            $("#" + shipID).animate({
                left: parseInt(moveX),
                top: parseInt(moveY)
            }, 500);
        }
    });
}

根据您的确切设置和插件的工作方式,您可能需要检查currentRotation插件方法的内部。或者,您可能需要设置一些事件来执行该if语句。同样,这取决于你如何将这一切结合在一起(你怎么知道什么时候需要旋转?)

于 2013-08-07T01:23:08.063 回答