x
xintrea24 января 2018 г. 6:36

В чем отличие NumberAnimation от PropertyAnimation в языке QML?

qml, анимация

Вопрос назрел, по документации непонятно зачем сделано два идентичных типа.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

5
Evgenii Legotckoi
  • 24 января 2018 г. 6:54

PropertyAnimation - это базовый тип для нескольких видов анимации, в том числе и для NumberAnimation, который наследован от него.

Единственное видимое отличие NumberAnimation от PropertyAnimation в том, что в документации присутствует переопределение свойств from и to. Если посмотреть другие анимации, которые наследованы от PropertyAnimation, то можно увидеть, что там также переопределены свойства from и to, с некоторым дополнениями свойств в отдельных случаях.

То есть все эти анимации свойств являются специализированными объектами для выполнения анимаций. Единственное, что мне приходит на ум, так это то, что это было сделано в целях специализации типов QML, а также что под капотом этих специализированных анимаций присутствует некая оптимизация для специализированных типов данных значений from и to. Но я в исходники этих типов не заглядывал, так что это только предположение.

    x
    • 24 января 2018 г. 14:41

    В декументации есть какая-то странная фраза про свойство from:


    This property holds the starting value for the animation.
    For example, the following animation is not applied until the x value has reached 100:

    Я перевел как: Это свойство устанавливает начальное значение, которое будет анимироваться. Например, следующая анимация не будет применяться пока значение X не достигнет 100.

    Сижу и думаю, что бы это значило.

      Evgenii Legotckoi
      • 24 января 2018 г. 16:38

      Учитывая пример из документации, в котором Вы это смотрели

      Item {
          states: [
              // ...
          ]
      
          transition: Transition {
              NumberAnimation { properties: "x"; from: 100; duration: 200 }
          }
      }
      Смысл данного предложения заключается в следующем:
      Добавленная анимация может быть применена к объектом в том и только в том случае, когда его свойство x будет равно 100.
      То есть, если положение объекта по оси X будет отлично от 100, то анимация выполняться не будет ни при каких условиях. Но это не значит, что Вы не можете её добавить в ваш объект QML, просто запустить вы её сможете только тогда, когда объект будет иметь позицию по координате X равную 100.
        x
        • 30 января 2018 г. 15:22

        А что вообще это за странная анимация, которая начинается при x=100, длится 200мс, но непонятно на каком значении заканчивается и непонятно какую переменную обрабатывает?

          Evgenii Legotckoi
          • 30 января 2018 г. 16:12

          Вот вам пример такой "странной" анимации.

          import QtQuick 2.9
          import QtQuick.Window 2.2
          import QtQuick.Controls 2.2
          
          Window {
              visible: true
              width: 640
              height: 480
              title: qsTr("Hello World")
          
              Rectangle {
                  id: rect
                  color: "green"
                  width: 50
                  height: 50
                  x: 100
          
                  transitions: Transition {
                      NumberAnimation { properties: "x"; from: 100; duration: 200 }
                  }
          
                  states: [
                      // This adds a second state to the container where the rectangle is farther to the right
          
                      State { name: "other"
          
                          PropertyChanges {
                              target: rect
                              x: 200
                          }
                      }
                  ]
              }
          
              Button {
                  text: qsTr("Click me")
          
                  anchors.bottom: parent.bottom
                  anchors.horizontalCenter: parent.horizontalCenter
          
                  onClicked: rect.state = "other"
              }
          }
          Эти анимации и изменения свойств предназначены для работы со состояниями. Состояние изменяет целевое свойство. И если одно из изменений позволяет данное изменение, то есть первоначальное положение объекта по оси x равно 100, то анимация, а если быть точным анимированое изменение свойства сработает. В противном случае не будет работать. Ну а длительность изменения будет равна 200 мс.

            Комментарии

            Только авторизованные пользователи могут публиковать комментарии.
            Пожалуйста, авторизуйтесь или зарегистрируйтесь
            AD

            C++ - Тест 004. Указатели, Массивы и Циклы

            • Результат:50баллов,
            • Очки рейтинга-4
            m
            • molni99
            • 26 октября 2024 г. 8:37

            C++ - Тест 004. Указатели, Массивы и Циклы

            • Результат:80баллов,
            • Очки рейтинга4
            m
            • molni99
            • 26 октября 2024 г. 8:29

            C++ - Тест 004. Указатели, Массивы и Циклы

            • Результат:20баллов,
            • Очки рейтинга-10
            Последние комментарии
            i
            innorwall14 ноября 2024 г. 19:42
            Как Копировать Файлы в Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
            i
            innorwall14 ноября 2024 г. 17:09
            Qt/C++ - Урок 068. Hello World с использованием системы сборки CMAKE в CLion ditropan pristiq dosing With the Yankees leading, 4 3, Rivera jogged in from the bullpen to a standing ovation as he prepared for his final appearance in Chicago buy priligy pakistan
            i
            innorwall14 ноября 2024 г. 12:05
            EVILEG-CORE. Использование Google reCAPTCHA 2001; 98 29 34 priligy buy
            i
            innorwall14 ноября 2024 г. 12:00
            PyQt5 - Урок 007. Работаем с QML QtQuick (Сигналы и слоты) priligy 30mg Am J Obstet Gynecol 171 1488 505
            Сейчас обсуждают на форуме
            i
            innorwall14 ноября 2024 г. 11:39
            добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
            i
            innorwall11 ноября 2024 г. 18:55
            Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
            9
            9Anonim25 октября 2024 г. 16:10
            Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
            ИМ
            Игорь Максимов3 октября 2024 г. 11:05
            Реализация навигации по разделам Спасибо Евгений!

            Следите за нами в социальных сетях