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


方法文档

int advance()

将精灵动画前进一帧。


int pause()

暂停精灵动画。如果pausedtrue ,则不会执行任何操作。

另请参阅 resume() 。


int restart()

先停止再启动精灵动画。


int resume()

如果pausedtrue ,则恢复精灵动画;否则不执行任何操作。

另请参阅 pause()。


start()

启动精灵动画。如果动画已在运行,调用此方法不会产生任何效果。

另请参阅 stop()。


stop()

停止精灵动画。如果动画尚未运行,调用此方法不会有任何效果。

另请参阅 start()。


© 2025 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.