Qt Quick里的AnimatedSprite的用法
来源:互联网 发布:佐伊技能数据 编辑:程序博客网 时间:2024/05/23 17:26
之前用 AnimatedImage 时一直对 AnimatedSprite 很奇怪,想试一下怎么用,一下子没试出来,放下了,后来一直没时间。 OK ,今天想起来,又搞了一下。
AnimatedSprite 说明
AnimatedSprite 元素用来播放精灵动画。
一些常见的属性解释:
- source 属性是 url 类型的,接受一个包含多帧的图片。
- frameWidth 和 frameHeight 指定帧大小。
- frameX 和 frameY 指定第一帧的左上角。
- frameCount 指定这个精灵动画有多少帧。
- frameDuration 指定每一帧的持续时间。相关的还有一个 frameRate ,指定帧率,即每秒播放多少帧。如果你指定了帧率,优先使用帧率来播放动画。
- paused 属性是 bool 值,指示动画是否处在暂停状态,默认是 false
- running 属性是 bool 值,指示动画是否在运行,默认是 true ,一启动就运行。如果你设置它为 false ,那 AnimatedSprite 对象构造完毕后并不运行,需要将其设置为 true 才开始运行。
- loops 为 int 型,指示循环播放的次数,默认是无限循环
方法:
- pause() ,暂停动画
- resume() ,继续播放
- restart() ,重新播放,当动画处在播放状态时有效
- advance() ,前进一帧,当动画处在暂停状态时有效
还有一些属性,看帮助吧。
图片格式
AnimatedSprite 元素使用的图片格式有特别的要求。下面是我们示例用的图片:
图片需要平铺所有的帧(和GIF不同),其实这里的帧就是图片里的一个区域。平铺的顺序是从左到右、从上到下。你指定了 frameX 、 frameY 、 frameWidth 、 frameHeight 、 frameCount ,AnimatedSprite 就会分析你提供的图片,生成相关帧的信息。
示例
创建了一个 Qt Quick Application ,播放 numbers.png ,效果看起来就像电影前面的倒计时数字那样。
效果如图:
main.qml 代码都在这里:
- import QtQuick 2.3
- import QtQuick.Window 2.2
- import QtQuick.Controls 1.2
- Window {
- visible: true;
- width: 360;
- height: 320;
- color: "black";
- AnimatedSprite {
- id: animated;
- width: 64;
- height: 64;
- anchors.centerIn: parent;
- source: "qrc:/numbers.png";
- frameWidth: 64;
- frameHeight: 64;
- frameDuration: 200;
- frameCount: 10;
- frameX: 0;
- frameY: 0;
- onCurrentFrameChanged: {
- info.text = "%1/%2".arg(animated.currentFrame).arg(animated.frameCount);
- }
- }
- Row{
- spacing: 4;
- anchors.horizontalCenter: parent.horizontalCenter;
- anchors.bottom: parent.bottom;
- anchors.bottomMargin: 4;
- Text {
- id: info;
- width: 60;
- height: 24;
- color: "red";
- verticalAlignment: Text.AlignVCenter;
- horizontalAlignment: Text.AlignRight;
- }
- Button {
- width: 60;
- height: 24;
- text: (animated.paused == true) ? "Play" : "Pause";
- onClicked: (animated.paused == true) ? animated.resume() : animated.pause();
- }
- Button {
- width: 70;
- height: 24;
- text: "Advance";
- onClicked: animated.advance();
- }
- Button {
- width: 70;
- height: 24;
- text: "Restart";
- onClicked: animated.restart();
- }
- Button {
- width: 60;
- height: 24;
- text: "Quit";
- onClicked: Qt.quit();
- }
- }
- }
很简单,不解释了。
回顾一下我的Qt Quick系列文章:
- Qt Quick 简介
- QML 语言基础
- Qt Quick 之 Hello World 图文详解
- Qt Quick 简单教程
- Qt Quick 事件处理之信号与槽
- Qt Quick事件处理之鼠标、键盘、定时器
- Qt Quick 事件处理之捏拉缩放与旋转
- Qt Quick 组件与对象动态创建详解
- Qt Quick 布局介绍
- Qt Quick 之 QML 与 C++ 混合编程详解
- Qt Quick 图像处理实例之美图秀秀(附源码下载)
- Qt Quick 之 PathView 详解
- Qt Quick实例之挖头像
- Qt Quick综合实例之文件查看器
- Qt Quick调试之显示代码行号
- Qt Quick实现的涂鸦程序
- Qt Quick播放GIF动画
- Qt Quick 中的 drag and drop(拖放)
0 0
- Qt Quick里的AnimatedSprite的用法
- Qt Quick里的AnimatedSprite的用法
- Qt Quick里的粒子系统
- Qt Quick里的图形效果(Graphical Effects)
- Qt Quick里的图形效果:阴影(Drop Shadow)
- Qt Quick里的图形效果:阴影(Drop Shadow)
- QT里定时器QTimer的用法
- QT里定时器QTimer的用法
- Qt Quick常用的控件..
- Qt Widgets、QML、Qt Quick的区别
- Qt Widgets、QML、Qt Quick的区别
- Qt Widgets、QML、Qt Quick的区别
- Qt Quick里的图形效果——混合(Blend)
- Qt Quick里的图形效果——颜色(Color)
- Qt Quick里的图形效果——渐变(Gradient)
- quick-cocos2d-x里的MVC
- Qt Quick实现页面之间的导航
- Qt Quick实现的涂鸦程序
- CORS(跨域资源共享) 的配置
- Java String面试题
- 从相册中取图片奔溃问题解决
- Ant自动编译打包&发布 android项目
- HP UNIX 命令
- Qt Quick里的AnimatedSprite的用法
- SQL注入
- 串口程序设计——struct termios结构体
- 【SSH】之Hibernate
- win7 64位下如何安装配置mysql-winx64(安装记录)
- bzoj 2464 题解
- jQuery中json对象与json字符串互换
- UVA 1346 - Songs (贪心)
- leetcode——First Missing Positive