В основном это переписываемый конфликт, в то время как первые две шкалы времени могут сосуществовать без каких-либо проблем, но с момента добавления их на третью шкалу времени они подчиняются тем игровым точкам timelne, а также их целям. Кроме того, поскольку у вас есть две родительские временные рамки, родитель, созданный в конце «moveLeftRight», в этом случае перезаписывает все другие временные рамки, учитывая тот факт, что все временные рамки влияют на одну и ту же цель и одно и то же свойство «X». Если вы используете это:
// Declare timelines
var moveRight = new TimelineMax({paused: true})
.fromTo(box, 1, {x: 0}, {x: 300});
var moveLeft = new TimelineMax({paused: true})
.fromTo(box, 1, {x: 300}, {x: 0});
var moveRightLeft = new TimelineMax({paused: true})
.add(moveRight.play())
.add(moveLeft.play());
/*var moveLeftRight = new TimelineMax({paused: true})
.add(moveLeft.play())
.add(moveRight.play());*/
код работает moveRightLeft но вы получите странные результаты с отдельными кнопками.
Решение состоит в том, чтобы создать основные временные рамки на кнопке событий, как и избежать подобных конфликтов, создавая все временные рамки, как глобальные переменные:
// Declare timelines
var moveRight = new TimelineMax({paused: true})
.fromTo(box, 1, {x: 0}, {x: 300});
var moveLeft = new TimelineMax({paused: true})
.fromTo(box, 1, {x: 300}, {x: 0});
// Handler functions
window.moveRight = function() { moveRight.play(0); }
window.moveLeft = function() { moveLeft.play(0); }
window.moveRightLeft = function()
{
var moveRightLeft = new TimelineMax()
.add(moveRight)
.add(moveLeft);
}
window.moveLeftRight = function()
{
var moveLeftRight = new TimelineMax()
.add(moveLeft)
.add(moveRight);
}
Другой выбор является использование только один из родителей сроки и использовать игру (0) и обратные (0), как это:
// Declare timelines
var moveRight = new TimelineMax({paused: true})
.fromTo(box, 1, {x: 0}, {x: 300});
var moveLeft = new TimelineMax({paused: true})
.fromTo(box, 1, {x: 300}, {x: 0});
var moveRightLeft = new TimelineMax({paused:true})
.add(moveRight)
.add(moveLeft);
// Handler functions
window.moveRight = function() { moveRight.play(0); }
window.moveLeft = function() { moveLeft.play(0); }
window.moveRightLeft = function()
{
moveRightLeft.play(0);
}
window.moveLeftRight = function()
{
moveRightLeft.reverse(0);
}
Я обновил свою скрипку: http://jsfiddle.net/Zde5U/8/
Проблема заключается в том, что если вы создаете два временных графика, а затем добавляете эти временные графики в другой, на какой временной шкале есть элемент управления?, Было бы довольно бесполезно, если бы вложенная временная шкала могла контролировать точку воспроизведения его родительской временной шкалы, что, если у родителя есть 4 вложенных временных графика, и каждый из них пытается контролировать головку проигрывателя ?, это анимационный хаос.
Rodrigo.
Я обнаружил, что это тот, который сработал. В надлежащем порядке; создайте функцию, создайте переменную в вызове функции, используйте переменную. – Afrowave