Spec-Zone.ru › Qt 6.0

Тип QML AnimatedSprite

Отображает анимацию спрайта. Подробнее...

Заявление об импорте: import QtQuick 2.0
Наследует:

Элемент

  • Список всех членов, включая унаследованные

Свойства

  • currentFrame : int
  • finishBehavior : перечисление
  • frameCount : int
  • frameDuration : int
  • frameHeight : int
  • frameRate : qreal
  • frameSync : bool
  • frameWidth : int
  • frameX : int
  • frameY : int
  • interpolate : bool
  • loops : int
  • paused : bool
  • reverse : bool
  • running : bool
  • source : url

Сигналы

  • finished()

Методы

  • int advance()
  • int pause()
  • int restart()
  • int resume()
  • start()
  • stop()

Подробное описание

AnimatedSprite предоставляет возможности отрисовки и управления анимациями, которые предоставляются как несколько кадров в одном файле изображения. Вы можете воспроизводить его с фиксированной скоростью, со скоростью кадров вашего дисплея или вручную продвигать и контролировать процесс.

Рассмотрим следующий спрайт-лист:

Он может быть разделен на четыре кадра:

Чтобы воспроизводить каждый из этих кадров со скоростью 500 миллисекунд на кадр, можно использовать следующий код:

Код Результат
AnimatedSprite {
    source: "loading.png"
    frameWidth: 64
    frameHeight: 64
    frameCount: 4
    frameDuration: 500
}

По умолчанию кадры интерполируются (складываются вместе), чтобы анимация выглядела плавнее. Чтобы отключить это, установите interpolate на false:

Код Результат
AnimatedSprite {
    source: "loading.png"
    frameWidth: 64
    frameHeight: 64
    frameCount: 4
    frameDuration: 500
    interpolate: false
}

Чтобы контролировать, как AnimatedSprite реагирует на масштабирование, используйте свойство smooth.

Обратите внимание, что в отличие от SpriteSequence, тип AnimatedSprite не использует Sprite для определения нескольких анимаций, а вместо этого сам инкапсулирует одну анимацию.

См. также Анимации спрайтов.

Документация по свойствам

currentFrame : int

При приостановке текущий кадр можно вручную продвинуть, установив это свойство или вызвав advance().

finishBehavior : перечисление

Поведение при завершении анимации.

Константа Описание
FinishAtInitialFrame При завершении анимации она возвращается к начальному кадру. Это поведение по умолчанию.
FinishAtFinalFrame При завершении анимации она остается на последнем кадре.

frameCount : int

Количество кадров в этом AnimatedSprite.

frameDuration : int

Продолжительность каждого кадра анимации в миллисекундах. Значения, меньшие или равные 0, недействительны.

Если frameRate допустимо, оно будет использоваться для вычисления продолжительности кадров. Если нет, а frameDuration допустимо, frameDuration будет использоваться.

Изменение этого параметра перезапустит анимацию.

frameHeight : int

Высота одного кадра в этом AnimatedSprite.

Можно опустить, если это единственный спрайт в файле.

frameRate : qreal

Кадры в секунду для отображения в анимации. Значения, меньшие или равные 0, недействительны.

Если frameRate допустимо, оно будет использоваться для вычисления продолжительности кадров. Если нет, а frameDuration допустимо, frameDuration будет использоваться.

Изменение этого параметра перезапустит анимацию.

frameSync : bool

Если true, анимация не будет иметь продолжительности. Вместо этого анимация будет продвигать на один кадр каждый раз, когда кадр будет отрисовываться на экране. Это синхронизирует ее со скоростью отрисовки, а не с истекшим временем.

Если frameSync установлено в true, оно переопределяет как frameRate, так и frameDuration.

По умолчанию false.

Изменение этого параметра перезапустит анимацию.

frameWidth : int

Ширина одного кадра в этом AnimatedSprite.

Можно опустить, если это единственный спрайт в файле.

frameX : int

Координата X в файле изображения первого кадра AnimatedSprite.

Можно опустить, если первый кадр начинается в верхнем левом углу файла.

frameY : int

Координата Y в файле изображения первого кадра AnimatedSprite.

Можно опустить, если первый кадр начинается в верхнем левом углу файла.

interpolate : bool

Если true, произойдет интерполяция между кадрами спрайта, чтобы анимация выглядела плавнее.

По умолчанию true.

loops : int

После воспроизведения анимации столько раз, анимация автоматически остановится. Отрицательные значения недействительны.

Если это установлено в AnimatedSprite.Infinite, анимация не будет останавливаться самостоятельно.

По умолчанию AnimatedSprite.Infinite

paused : bool

При приостановке текущий кадр можно вручную продвинуть.

По умолчанию false.

reverse : bool

Если true, анимация будет воспроизводиться в обратном порядке.

По умолчанию false.

running : bool

Анимируется ли спрайт или нет.

По умолчанию true

source : url

Источник изображения для анимации.

Если frameHeight и frameWidth не указаны, предполагается, что это один длинный ряд квадратных кадров. В противном случае это могут быть несколько смежных строк или прямоугольных кадров, когда одна строка заканчивается, следующая будет использоваться.

Если frameX и frameY указаны, строка кадров будет взята с указанной координатой x/y в качестве верхнего левого угла.

Документация по сигналам

[since 5.12] finished()

Этот сигнал генерируется, когда анимация спрайта завершается.

Он не излучается, когда свойство running установлено в false, а также для спрайтов, у которых свойство loops установлено в AnimatedSprite.Infinite.

Примечание: Соответствующий обработчик — onFinished.

Этот сигнал был введён в Qt 5.12.

Документация по методам

int advance()

Передвигает анимацию спрайта на один кадр.

int pause()

Приостанавливает анимацию спрайта. Это ничего не делает, если свойство paused установлено в true.

См. также resume().

int restart()

Останавливает и затем запускает анимацию спрайта.

int resume()

Возобновляет анимацию спрайта, если свойство paused установлено в true; в противном случае ничего не делает.

См. также pause().

[since 5.15] start()

Запускает анимацию спрайта. Если анимация уже запущена, вызов этого метода не оказывает никакого эффекта.

Этот метод был введён в Qt 5.15.

См. также stop().

[since 5.15] stop()

Останавливает анимацию спрайта. Если анимация не запущена, вызов этого метода не оказывает никакого эффекта.

Этот метод был введён в Qt 5.15.

См. также start().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qml-qtquick-animatedsprite.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API