QML-анимация с «скоростью» и бесконечными «петлями» - PullRequest
5 голосов
/ 29 апреля 2011

Я пытаюсь собрать анимацию, в которой я могу указать скорость (а не продолжительность) и которая зацикливается навсегда.Я придумал два нерабочих примера:

FirstTry.qml

import Qt 4.7

Rectangle {
  width: 100; height: 100
  Text {
    text: "hello"
    NumberAnimation on x {
      to: 50;
      loops: Animation.Infinite;
      duration: 50 * Math.abs(to - from)
    }
  }
}

Я получаю следующее предупреждение времени выполнения, пока hello сходит с ума на экранедостаточно справедливо).

QDeclarativeExpression: Expression "(function() { return 50 * Math.abs(to - from) })" depends on non-NOTIFYable properties: 
    QDeclarativeNumberAnimation::to
    QDeclarativeNumberAnimation::from

SecondTry.qml

import Qt 4.7

Rectangle {
  width: 100; height: 100
  Text {
    text: "hello"
    SmoothedAnimation on x {
      to: 50;
      loops: Animation.Infinite;
      velocity: 50
    }
  }
}

Это больше загадка - SmoothedAnimation просто отказывается от петли!Анимация запускается один раз, и все.

Итак, у меня есть следующие вопросы:

Есть ли законный способ указать скорость в первом примере?Я понимаю, что SmoothedAnimation является производным от NumberAnimation, поэтому, возможно, это возможно в QML, а не только в C ++.

Есть ли способ сделать цикл SmoothedAnimation?Во втором примере не работает ошибка или я что-то упускаю?

Есть ли другой способ достижения этих двух вариантов поведения одновременно?

Ответы [ 3 ]

3 голосов
/ 19 апреля 2014

просто добавьте параметр "from" явно:

import Qt 4.7

Rectangle {
  width: 100; height: 100
  Text {
    text: "hello"
    NumberAnimation on x {
      from: 0;
      to: 50;
      loops: Animation.Infinite;
      duration: 50 * Math.abs(to - from)
    }
  }
}
1 голос
/ 30 апреля 2011

Это то, что я сделал как временное решение, я не уверен, что оно адекватное, но, похоже, оно делает то, что мне нужно.на вопросы, хотя.

0 голосов
/ 22 сентября 2015

Даже если SmoothedAnimation не принимает параметр loops , вы можете поместить его в SequentialAnimation и применить loops к этому внешнему покрытию , В результате ваша сглаженная анимация будет воспроизводиться непрерывно.

...