2013-08-07 4 views
0

У меня есть эта часть кода, вращающая изображение, а затем его перемещение - что прекрасно работает, если изображение не вращается - это означает, что текущий угол изображения равен углу, который он должен rotate to - в этом случае функция callback не вызывается, поэтому анимации нет. Функция поворота поступает из плагина.jquery rotate callback не вызывается, если изображение не повернуто

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

Если функция анимации записывается после поворота - тогда вращение и анимация происходят одновременно.

Я не думаю, что могу заставить обратный вызов, как мне пришлось бы редактировать плагин (но я не уверен об этом). Есть ли способ написать анимат после поворота, но ждать окончания вращения? Я предполагаю, что одним из способов было бы использовать задержку, но есть ли более правильный способ?

+0

Не используйте 'animateTo' в параметрах плагина и вместо этого выполняйте' $. animate() 'в' обратном вызове 'плагина? – matthewpavkov

+0

Хорошо, похоже, я прыгнул сюда. Вы уже выполняете анимацию в 'callback'. Итак, в чем же проблема? – matthewpavkov

+0

callback не запускается, если изображение уже указывает в направлении, в котором оно должно вращаться до –

ответ

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. Опять же, это будет зависеть от того, как вы свяжете это все вместе (как вы знаете, когда хотите что-то повернуть?)

Смежные вопросы