Как сохранить исходную позицию div () для последующего использования?

0

В настоящее время я запускаю анимационную последовательность с библиотекой GSAP JS.

После запуска первого экземпляра анимации я запускаю функцию onComplete сохраняя текущую position() для #myDiv

Затем я пытаюсь использовать значение coordX в последнем экземпляре моей анимации, однако оно просто появляется как: недопустимое значение левого поворота : неопределено

Есть идеи?

var coordX;

function regPosition() {
    coordX = $("#mydiv").position().left;
}

function animationStart() {
    //Initiate animation with onComplete
    tl.to("#mydiv", 0.5, {borderRadius:"50%", width: "35%", onComplete: regPosition})

    //Move #myDiv to another position than registered    
    .to("#mydiv", 0.5, {left: 1000})

    //try to use the original position stored in "coordX"
    .fromTo("#mydiv", 1.5, {left:-800}, {left:coordX});
}
animationStart();
Теги:
greensock

3 ответа

2
Лучший ответ

Значение coordX не установлено до тех пор, пока onComplete будет фактически вызван после завершения первого .to. До тех пор значение не undefined.

Таким образом, проблема заключается в том, что во время определения значение coordX не undefined, и это значение, которое вы назначаете left. Поэтому, когда это .to оценивается, он видит undefined значение.

Возможно, лучший способ - запустить обратную анимацию в onComplete:

function animationStart() {
    tl.to("#mydiv", 0.5, {
        borderRadius:"50%", 
        width: "35%", 
        onComplete: function() {
            var coordX = regPosition();
            tl.to("#mydiv", 0.5, {left: 1000})
              .fromTo("#mydiv", 1.5, {left:-800}, {left: coordX});
        }
    })
}
  • 0
    Взглянул на Регулу , это круто! Отличная работа!!
  • 0
    @IliaRostovtsev Спасибо :)
Показать ещё 1 комментарий
0

Создайте переменную, сохраните позицию intro и используйте позже. Я предпочитаю.offset()...

  • 2
    Этот ответ был бы более полезным, если бы он сопровождался фрагментом кода, показывающим, как это сделать.
0

У вашего кода есть некоторые логические проблемы относительно времени. для выполнения каждого шага требуется некоторое время, и функция onComplete не будет вызываться до тех пор, пока все ваши действия не будут выполнены. не onComplete обратный вызов пользователя, а просто сохраняйте coordX перед началом анимации и используйте ее, когда это будет сделано.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню