x
xintreaҚаң. 24, 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, 2: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, 4:38 Т.Қ.

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

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

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

          Evgenii Legotckoi
          • Қаң. 30, 2018, 4: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, 1:37 Т.Ж.

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

            • Нәтиже:80ұпай,
            • Бағалау ұпайлары4
            m
            • molni99
            • Қаз. 26, 2024, 1:29 Т.Ж.

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

            • Нәтиже:20ұпай,
            • Бағалау ұпайлары-10
            Соңғы пікірлер
            ИМ
            Игорь МаксимовҚар. 22, 2024, 11:51 Т.Ж.
            Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
            Evgenii Legotckoi
            Evgenii LegotckoiҚаз. 31, 2024, 2:37 Т.Қ.
            Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
            A
            ALO1ZEҚаз. 19, 2024, 8:19 Т.Ж.
            Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
            ИМ
            Игорь МаксимовҚаз. 5, 2024, 7:51 Т.Ж.
            Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
            d
            dblas5Шілде 5, 2024, 11:02 Т.Ж.
            QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
            Енді форумда талқылаңыз
            m
            moogoҚар. 22, 2024, 7:17 Т.Ж.
            Mosquito Spray System Effective Mosquito Systems for Backyard | Eco-Friendly Misting Control Device & Repellent Spray - Moogo ; Upgrade your backyard with our mosquito-repellent device! Our misters conce…
            Evgenii Legotckoi
            Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
            добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
            t
            tonypeachey1Қар. 15, 2024, 6:04 Т.Ж.
            google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
            NSProject
            NSProjectМаусым 4, 2022, 3:49 Т.Ж.
            Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

            Бізді әлеуметтік желілерде бақылаңыз