x
xintreaJan. 24, 2018, 6:36 a.m.

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

qml, анимация

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

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

5
Evgenii Legotckoi
  • Jan. 24, 2018, 6:54 a.m.

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

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

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

    x
    • Jan. 24, 2018, 2:41 p.m.

    В декументации есть какая-то странная фраза про свойство 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
      • Jan. 24, 2018, 4:38 p.m.

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

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

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

          Evgenii Legotckoi
          • Jan. 30, 2018, 4:12 p.m.

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

          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 мс.

            Comments

            Only authorized users can post comments.
            Please, Log in or Sign up
            AD

            C ++ - Test 004. Pointers, Arrays and Loops

            • Result:50points,
            • Rating points-4
            m

            C ++ - Test 004. Pointers, Arrays and Loops

            • Result:80points,
            • Rating points4
            m

            C ++ - Test 004. Pointers, Arrays and Loops

            • Result:20points,
            • Rating points-10
            Last comments
            i
            innorwallNov. 12, 2024, 6:12 a.m.
            Django - Tutorial 055. How to write auto populate field functionality Freckles because of several brand names retin a, atralin buy generic priligy
            i
            innorwallNov. 12, 2024, 2:23 a.m.
            QML - Tutorial 035. Using enumerations in QML without C ++ priligy cvs 24 Together with antibiotics such as amphotericin B 10, griseofulvin 11 and streptomycin 12, chloramphenicol 9 is in the World Health Organisation s List of Essential Medici…
            i
            innorwallNov. 11, 2024, 11:50 p.m.
            Qt/C++ - Lesson 052. Customization Qt Audio player in the style of AIMP It decreases stress, supports hormone balance, and regulates and increases blood flow to the reproductive organs buy priligy online safe Promising data were reported in a PDX model re…
            i
            innorwallNov. 11, 2024, 10:19 p.m.
            Heap sorting algorithm The role of raloxifene in preventing breast cancer priligy precio
            i
            innorwallNov. 11, 2024, 9:55 p.m.
            PyQt5 - Lesson 006. Work with QTableWidget buy priligy 60 mg 53 have been reported by Javanovic Santa et al
            Now discuss on the forum
            i
            innorwallNov. 12, 2024, 4:56 a.m.
            добавить qlineseries в функции buy priligy senior brother Chu He, whom he had known for many years
            i
            innorwallNov. 11, 2024, 6:55 p.m.
            Всё ещё разбираюсь с кешем. 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
            9AnonimOct. 25, 2024, 4:10 p.m.
            Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

            Follow us in social networks