本页内容

AnimatedSprite QML Type

绘制精灵动画。更多...

Import Statement: import QtQuick
Inherits:

Item

属性

信号

方法

详细说明

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 来定义多个动画,而是自身封装了一个单一的动画。

另请参阅 “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` 设为 `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()

当精灵的动画播放完毕时,会触发此信号。

当“running”属性设置为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.