目录

背景

基本概念

博主例子

源码打包下载


背景

最近在研究一个稍微复杂的QML官方例子,里面有个SpriteSequence及Sprite知识点,我从来没有用过,这次特意花时间提取了出来,方便以后进行查阅。这个东西用来写游戏,或者xx软件的背景,或者xx动态效果,贼吉尔6!!!

基本概念

SpriteSequence及Sprite,用法和前端差不多,这里我只说明其中的用法,具体参数含义可以查阅文档;

关键点一:分析素材,如下:

从这个图里面,可以看到人物有4种状态,分别是向下、向左、向右、向上;

每一个有4张图。

SpriteSequence及Sprite有只要选择好要指定的位置(X轴),以及高度(一般是整张图片/4的高度)

就可以实现动态播放了。

关键代码如下:

        SpriteSequence {id: sequence;width: 50;height: 100;interpolate: false;running: false;sprites: [Sprite {name: "down";source: image1.source;frameCount: 4;frameWidth: image1.width/4;frameHeight: image1.height/4;frameRate: 10;},Sprite {name: "left";source: image1.source;frameCount: 4;frameY: image1.height/4;frameWidth: image1.width/4;frameHeight: image1.height/4;frameRate: 10;},Sprite {name: "right";source: image1.source;frameCount: 4;frameY: image1.height/4*2;frameWidth: image1.width/4;frameHeight: image1.height/4;frameRate: 10;},Sprite {name: "up";source: image1.source;frameCount: 4;frameY: image1.height/4*3;frameWidth: image1.width/4;frameHeight: image1.height/4;frameRate: 10;}]}

其中frameCount和frmeY,frameWidth,frameHeight就是关键点!

interpolate: false;这个参数感觉在背景动态等方面使用特别的好,在此就设置为false;

博主例子

程序运行截图如下:

程序结构如下:

main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>int main(int argc, char *argv[])
{QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);QGuiApplication app(argc, argv);QQmlApplicationEngine engine;engine.load(QUrl(QStringLiteral("qrc:/main.qml")));if (engine.rootObjects().isEmpty())return -1;return app.exec();
}

main.qml

import QtQuick 2.9
import QtQuick.Window 2.2Window {visible: truewidth: 640height: 480title: qsTr("Sprite Demo")Image {id: bgsource: "qrc:/img/bg.jpeg"fillMode: Image.Pad}Soldier{id : soldier}
}

Soldier.qml

import QtQuick 2.0Item {Image {x:200;id: image1;source: "qrc:/img/soldier.png";visible: false}SpriteSequence {id: sequence;width: 50;height: 100;interpolate: false;running: false;sprites: [Sprite {name: "down";source: image1.source;frameCount: 4;frameWidth: image1.width/4;frameHeight: image1.height/4;frameRate: 10;},Sprite {name: "left";source: image1.source;frameCount: 4;frameY: image1.height/4;frameWidth: image1.width/4;frameHeight: image1.height/4;frameRate: 10;},Sprite {name: "right";source: image1.source;frameCount: 4;frameY: image1.height/4*2;frameWidth: image1.width/4;frameHeight: image1.height/4;frameRate: 10;},Sprite {name: "up";source: image1.source;frameCount: 4;frameY: image1.height/4*3;frameWidth: image1.width/4;frameHeight: image1.height/4;frameRate: 10;}]}focus: true;Keys.onPressed: {switch(event.key){case Qt.Key_Up:sequence.y -= 5;sequence.jumpTo("up");sequence.running = true;break;case Qt.Key_Down:sequence.y += 5;sequence.jumpTo("down");sequence.running = true;break;case Qt.Key_Left:sequence.x -= 5;sequence.jumpTo("left");sequence.running = true;break;case Qt.Key_Right:sequence.x += 5;sequence.jumpTo("right");sequence.running = true;break;default:;}}Keys.onReleased: {sequence.running = false;}}

源码打包下载

https://github.com/fengfanchen/Qt/tree/master/SpritesOfQML

QML笔记-QML中SpriteSequence及Sprite的基本使用相关推荐

  1. QML笔记-4中方式运行qml文件

    目录 使用QQmlApplicationEngine运行qml 使用qml工具运行 使用qmlScene工具运行qml文件 使用QtQuick Prototype运行qml文件 使用QQmlAppli ...

  2. QML笔记-QML基本数据类型的使用

    目录 基本概念 举个栗子 基本概念 这里的数据类型不仅仅有C++里面的int,String等, 还有个很有特点的类型var,这个又可以放数组,也可以放函数,也可以混着换,很少有趣. 举个栗子 程序运行 ...

  3. WebQML笔记-qml获取canvas中元素是否被按下

    以前出了几个用QWebView,获取html前端数据的博文, 使用QWebElement可以直接获取html中元素的填充的值. 在此不在多提.这个是纯QML获取canvas中元素是否被按下的思路. 这 ...

  4. QML笔记-使用connect界面数据交互(qml中Designer使用)

    程序运行截图如下: 点击右边的sender 左边会接收到数据: 多次点击后: 这里关键是记录两点: 1. 是qml界面不同控件数据的传输 2. 使用设计器完成简单的qml控件设计 先来记录下qml中D ...

  5. Qt 5.12学习笔记--QML性能策略

    Qt 5.12学习笔记--QML性能策略 1 简介 2 时间因素 2 性能分析 3 JavaScript 部分 4 绑定 5 类型转换 6 解析属性 6 属性绑定 7 序列提示(Sequence ti ...

  6. QML笔记:QML基本概念及使用

    QML笔记:QML基本概念及使用 Qt5中的Qt Qml和Qt Quick架构 Qt Qml模块本身并没有涉及图形显示,所有的图形处理都由Qt Quick模块完成. Qt Quick 以QPA(Qt ...

  7. [QML开发笔记]-QML滑屏效果

    [QML开发笔记]-QML滑屏效果 QML的SwipeView滑屏控件.PageIndicator翻页指示器控件的功能介绍和使用方法.同样的功能我通过QWidget也进行了实现,可以参考QWidget ...

  8. QML地图Map中使用QPainterPath,并显示任意点经纬度位置

    QML地图Map中提供了供绘制图形的组件,例如MapPolyline,MapCircle等,但是这些组件在绘制复杂轨迹时就显得功能不够全面,因此我将QPainterPath在Map中进行使用并进行绘制 ...

  9. [QML开发笔记]-QML绘制仪表盘

    [QML开发笔记]-QML绘制仪表盘 使用QML绘制仪表盘,主要是因为使用QPainter绘制控件绘制习惯了,使用QML也要绘制一个试试.总体感觉,QML绘制起来还是挺方便的,QML自带的仪表盘控件功 ...

最新文章

  1. 服务器架设笔记——打通MySQL和Apache
  2. C/C++结构体四字节数据对齐
  3. 【最小费用最大流】Going Home
  4. office 2013 安装问题
  5. 《高性能网站构建实战》 目录--转
  6. java List及其实现类
  7. mysql 宽字符注入_sql注入 宽字节注入
  8. 《智慧书》格言211-220
  9. openStreetMap学习网站
  10. 12 MM配置-主数据-定义物料组
  11. 把实体 转为json 数据格式---jackson 的详细用法.
  12. 快递100 快递公司编码-标准国际
  13. ASP.NET 省市区联级
  14. 如何使用Beckhoff平台进行串口通讯(EL6002,EL6022)
  15. fluidsim元件库下载_fluidsim手册.pdf
  16. idea报错 No valid Maven installation found.maven不能用
  17. 基于cesium的三维管线系统综述
  18. 下载网站 favicon 图标的 3 种方法
  19. windows 7软件
  20. 笔记本连接不上外接显示器_如何将多个外接显示器连接到笔记本电脑

热门文章

  1. SQL Server 2000/2005 数据库分页
  2. VMware8 8.0.1 安装Lion正式版 原版镜像 直接DMG安装 非整合版 免引导 完美解决iCloud...
  3. 消除桌面虚拟化应用的存储瓶颈
  4. ykcchf 2013 v2.1101 最新版下载
  5. 不通人情世故的 飞秋官方下载 短处中
  6. 平时喜欢使用的软件总结 欲善其事,必先利其器
  7. 用VC++6.0 编写一个完整的
  8. Python有多火,来看一份24小时榜单,从入门到进阶,赶紧收藏!
  9. 一个月学会Python,零基础入门数据分析
  10. 程序员职业6个阶段,你处于哪个?