AnimatedSprite QML Type
绘制精灵动画。更多
| Import Statement: | import QtQuick |
| Inherits: |
属性
- currentFrame : int
- finishBehavior : enumeration
- frameCount : int
- frameDuration : int
- frameHeight : int
- frameRate : real
- frameSync : bool
- frameWidth : int
- frameX : int
- frameY : int
- interpolate : bool
- loops : int
- paused : bool
- reverse : bool
- running : bool
- source : url
信号
- finished()
方法
详细说明
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 : enumeration
动画自行结束时的行为。
| 常数 | 说明 |
|---|---|
FinishAtInitialFrame | 动画结束时会返回初始帧。这是默认行为。 |
FinishAtFinalFrame | 动画结束时,动画会停留在最后一帧。 |
frameCount : int
AnimatedSprite 中的帧数。
frameDuration : int
动画每帧的持续时间(毫秒)。小于或等于0 的值无效。
如果frameRate 有效,将使用它来计算帧的持续时间。如果不是,且 frameDuration 有效,则将使用frameDuration 。
更改此参数将重新启动动画。
frameHeight : int
该AnimatedSprite 中单帧的高度。
如果它是文件中唯一的精灵,则可以省略。
frameRate : real
动画中要显示的每秒帧数。小于或等于0 的值无效。
如果frameRate 有效,将使用它来计算帧的持续时间。如果不是,且frameDuration 有效,则将使用frameDuration 。
更改此参数将重新启动动画。
frameSync : bool
如果true ,动画将没有持续时间。相反,每向屏幕呈现一帧,动画就前进一帧。这将使动画与绘制速度同步,而不是与流逝时间同步。
如果 frameSync 设置为 true,它将覆盖frameRate 和frameDuration 。
默认值为false 。
更改该参数将重新启动动画。
frameWidth : int
该AnimatedSprite 中单帧的宽度。
如果它是文件中唯一的精灵,则可以省略。
frameX : int
图像文件中AnimatedSprite 第一帧的 X 坐标。
如果第一帧从文件的左上角开始,则可以省略。
frameY : int
图像文件中AnimatedSprite 第一帧的 Y 坐标。
如果第一帧从文件的左上角开始,则可以省略。
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 坐标作为左上角的帧行。
信号文档
finished()
该信号在精灵完成动画时发出。
当运行设置为false 时,以及精灵的loops 属性设置为AnimatedSprite.Infinite 时,都不会发出该信号。
注: 相应的处理程序是onFinished 。
方法文档
void advance(int frames = 1)
将精灵动画前进指定的步数frames 。
void pause()
暂停精灵动画。如果paused 是true ,则不起任何作用。
另请参阅 resume() 。
void restart()
先停止,再启动精灵动画。
void resume()
如果paused 是true ,则恢复精灵动画;否则什么也不做。
另请参见 pause().
void start()
启动精灵动画。如果动画已在运行,调用此方法将不起作用。
另请参阅 stop()。
void stop()
停止精灵动画。如果动画没有运行,调用此方法不会产生任何效果。
另请参阅 start()。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.