AnimatedSprite QML Type
Draws a sprite animation. More...
Import Statement: | import QtQuick 2.0 |
Inherits: |
Properties
- currentFrame : int
- finishBehavior : enumeration
- 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
Signals
- finished()
Methods
Detailed Description
AnimatedSprite provides rendering and control over animations which are provided as multiple frames in the same image file. You can play it at a fixed speed, at the frame rate of your display, or manually advance and control the progress.
Consider the following sprite sheet:
It can be divided up into four frames:
To play each of these frames at a speed of 500 milliseconds per frame, the following code can be used:
Code | Result |
---|---|
AnimatedSprite { source: "loading.png" frameWidth: 64 frameHeight: 64 frameCount: 4 frameDuration: 500 } |
|
By default, the frames are interpolated (blended together) to make the animation appear smoother. To disable this, set interpolate to false
:
Code | Result |
---|---|
AnimatedSprite { source: "loading.png" frameWidth: 64 frameHeight: 64 frameCount: 4 frameDuration: 500 interpolate: false } |
To control how AnimatedSprite responds to being scaled, use the smooth property.
Note that unlike SpriteSequence, the AnimatedSprite type does not use Sprite to define multiple animations, but instead encapsulates a single animation itself.
See also Sprite Animations.
Property Documentation
currentFrame : int
When paused, the current frame can be advanced manually by setting this property or calling advance().
finishBehavior : enumeration
The behavior when the animation finishes on its own.
Constant | Description |
---|---|
FinishAtInitialFrame |
When the animation finishes it returns to the initial frame. This is the default behavior. |
FinishAtFinalFrame |
When the animation finishes it stays on the final frame. |
frameCount : int
Number of frames in this AnimatedSprite.
frameDuration : int
Duration of each frame of the animation in milliseconds. Values less than or equal to 0
are invalid.
If frameRate is valid, it will be used to calculate the duration of the frames. If not, and frameDuration is valid, frameDuration
will be used.
Changing this parameter will restart the animation.
frameHeight : int
Height of a single frame in this AnimatedSprite.
May be omitted if it is the only sprite in the file.
frameRate : qreal
Frames per second to show in the animation. Values less than or equal to 0
are invalid.
If frameRate
is valid, it will be used to calculate the duration of the frames. If not, and frameDuration is valid, frameDuration
will be used.
Changing this parameter will restart the animation.
frameSync : bool
If true
, the animation will have no duration. Instead, the animation will advance one frame each time a frame is rendered to the screen. This synchronizes it with the painting rate as opposed to elapsed time.
If frameSync is set to true, it overrides both frameRate and frameDuration.
Default is false
.
Changing this parameter will restart the animation.
frameWidth : int
Width of a single frame in this AnimatedSprite.
May be omitted if it is the only sprite in the file.
frameX : int
The X coordinate in the image file of the first frame of the AnimatedSprite.
May be omitted if the first frame starts in the upper left corner of the file.
frameY : int
The Y coordinate in the image file of the first frame of the AnimatedSprite.
May be omitted if the first frame starts in the upper left corner of the file.
interpolate : bool
If true, interpolation will occur between sprite frames to make the animation appear smoother.
Default is true.
loops : int
After playing the animation this many times, the animation will automatically stop. Negative values are invalid.
If this is set to AnimatedSprite.Infinite
the animation will not stop playing on its own.
Default is AnimatedSprite.Infinite
paused : bool
When paused, the current frame can be advanced manually.
Default is false
.
reverse : bool
If true
, the animation will be played in reverse.
Default is false
.
running : bool
Whether the sprite is animating or not.
Default is true
source : url
The image source for the animation.
If frameHeight and frameWidth are not specified, it is assumed to be a single long row of square frames. Otherwise, it can be multiple contiguous rows or rectangluar frames, when one row runs out the next will be used.
If frameX and frameY are specified, the row of frames will be taken with that x/y coordinate as the upper left corner.
Signal Documentation
[since 5.12]
finished()
This signal is emitted when the sprite has finished animating.
It is not emitted when running is set to false
, nor for sprites whose loops property is set to AnimatedSprite.Infinite
.
Note: The corresponding handler is onFinished
.
This signal was introduced in Qt 5.12.
Method Documentation
int advance()
Advances the sprite animation by one frame.
int pause()
Pauses the sprite animation. This does nothing if paused is true
.
See also resume().
int restart()
Stops, then starts the sprite animation.
int resume()
Resumes the sprite animation if paused is true
; otherwise, this does nothing.
See also pause().
[since 5.15]
start()
Starts the sprite animation. If the animation is already running, calling this method has no effect.
This method was introduced in Qt 5.15.
See also stop().
[since 5.15]
stop()
Stops the sprite animation. If the animation is not running, calling this method has no effect.
This method was introduced in Qt 5.15.
See also 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