在本页

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

另请参阅 "精灵动画"。

属性文档

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,它将覆盖frameRateframeDuration

默认值为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

动画的图像源。

如果未指定frameHeightframeWidth ,则假定为一长排正方形帧。否则,可以是多个连续行或矩形帧,当一行用完时,将使用下一行。

如果指定了frameXframeY ,则将以该 x/y 坐标作为左上角的帧行。

信号文档

finished()

该信号在精灵完成动画时发出。

当运行设置为false 时,以及精灵的loops 属性设置为AnimatedSprite.Infinite 时,都不会发出该信号。

注: 相应的处理程序是onFinished

方法文档

void advance(int frames = 1)

将精灵动画前进指定的步数frames

void pause()

暂停精灵动画。如果pausedtrue ,则不起任何作用。

另请参阅 resume() 。

void restart()

先停止,再启动精灵动画。

void resume()

如果pausedtrue ,则恢复精灵动画;否则什么也不做。

另请参见 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.