Qt移动应用开发(二):使用动画框架
Qt移动应用开发(二):使用动画框架
上一篇博客介绍了怎样使用Qt的QML来对屏幕分辨率大小进行适应,其实,不同分辨率的适应是一个很棘手的问题,除了分辨率不同外,宽高比(aspect ratio)也不尽同样。
有些平板在硬件上做得和IPad一样是Retina屏(2048×1536),有些低端的手机分辨率仅仅有320×480。这样宽高比又不一样了。所以在设计App的过程一定要对内容布局有所规划。採用锚布局的方法能够帮我们解决一定的问题,同一时候也要善用Screen类的成员来获得系统分辨率的很多其它信息。
这篇文章主要介绍的是QtQuick的动画框架。
Qt Quick动画框架自从Qt4的时代就有了,当时也有非常多的demo给我们眼前一亮。
脱胎于C++的动画框架。Qt Quick的动画框架绚丽而且易用。非常值得学习。
原创文章。反对未声明的引用。原博客地址:http://blog.csdn.net/gamesdev/article/details/32730079
首先介绍一下与动画框架相关的几个类:
Animation是这些类的基类。它具有这几个属性:
alwaysRunToEnd : bool
loops : int
paused : bool
running : bool
后三个属性很好理解。第一个解释一下,假设设为true,那么不管动画是否结束,他都会让动画完毕最后一轮播放。设为false,那么一旦动画结束。那么动画马上结束。
Animation有非常多子类。包含AnchorAnimation、ParallelAnimation、ParentAnimation、PathAnimation、PauseAnimation、PropertyAction、PropertyAnimation、ScriptAction、和 SequentialAnimation。我们在实际应用中。一般单个动画会使用PropertyAnimation的子类ColorAnimation、NumberAnimation、RotationAnimation和Vector3dAnimation,以下是一个简单的样例:
NumberAnimation on x { from: 0;to: 100; duration: 1000 }
如上面样例所看到的,PropertyAnimation以下的子类灵活多样。有多种语法存在形式,经常和介词on以及短语Behavior on连用。上面的样例表示介词on左边的动画类型一定要和右边的属性类型相应。假设要对一个vector3d的变量应用介词on。那么应该这么写:
Vector3dAnimation on position { from: Qt.vector3d( 0, 0, 0 ); to Qt.vector3d( 1, 1, 1 ); duration: 1000 }
Behavior on和on的差别在于Behavioron是提供了默认的动画操作。即Behavior里面能够描写叙述默认的动画:
Behavior on width
{
NumberAnimation { duration: 1000 }
}
但可能是Qt Quick动画这一块不完好吧,有的时候在不同的平台上表现会有所不同,有时Behavior不工作。有时却又是好的(问题描写叙述)。
当Behavior遇到了状态转换(transition)时,Behavior会被覆盖。详情请參阅Qt的相关文档。
大家看到我制作的游戏三个细菌和胶囊是一直从左往右移动的,而且是循环的,这里展示一下代码:
Image
{
id:animateCapsule
height:parent.width / 10
width:height / 2
propertyint xFrom: parent.width + height * 8
propertyint xTo: -height * 2
x:xFrom
y:parent.height * 0.45
source:"../../images/capsule.png" RotationAnimation on rotation
{
from:0
to:360
loops:Animation.Infinite
duration:2000
} //@桌面:请注意使用这一段代码
Behavioron x
{
NumberAnimation
{
from:animateCapsule.xFrom
to:animateCapsule.xTo
loops:Animation.Infinite
duration:2000
}
}
}
本文參加了CSDN博文大赛。请大家支持我,为我投一票!
Qt移动应用开发(二):使用动画框架的更多相关文章
- 【Qt编程】基于Qt的词典开发系列<一>--词典框架设计及成品展示
去年暑假的时候,作为学习Qt的实战,我写了一个名为<我爱查词典>的词典软件.后来由于导师项目及上课等原因,时间不足,所以该软件的部分功能欠缺,性能有待改善.这学期重新拿出来看时,又有很多东 ...
- python运维开发(二十三)---tornado框架
内容目录: 路由系统 模板引擎 cookie 加密cookie 自定义api 自定义session 自定义form表单验证 异步非阻塞 web聊天室实例 路由系统 路由系统其实就是 url 和 类 的 ...
- Qt之动画框架
简述 Qt动画框架旨在为创建动画和平滑的GUI提供了一种简单的方法.通过Qt动画属性,该框架为部件和其它QObject对象的动画操作提供了非常大的自由性,框架也可以被用于图形视图框架中,动画框架中许多 ...
- php后台开发(二)Laravel框架
php后台开发(二)Laravel框架 为了提高后台的开发效率,往往需要选择一套适合自己的开发框架,因此,选择了功能比较完善的Laravel框架,仔细学来,感觉和Python语言的框架Django非常 ...
- Qt计算器开发(二):信号槽实现数学表达式合法性检查
表达式的合法性 由于我们的计算器不是单步计算的,所以我们能够一次性输入一个长表达式.然而假设用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比方, ...
- 【Qt编程】基于Qt的词典开发系列<二>--本地词典的设计
我设计的词典不仅可以实现在线查单词,而且一个重大特色就是具有丰富的本地词典库:我默认加入了八个类型的词典,如下所示: 由于是本人是通信专业,因此加入了华为通信词典.电子工程词典,又由于我喜爱编程,也加 ...
- 【Qt编程】基于Qt的词典开发系列<十二>调用讲述人
我们知道,win7系统自带有讲述人,即可以机器读出当前内容,具体可以将电脑锁定,然后点击左下角的按钮即可.之前在用Matlab写扫雷游戏的时候,也曾经调用过讲述人来进行游戏的语音提示.具体的Matla ...
- 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(2 配置spring-dao和测试)
用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(1 搭建目录环境和依赖) 四:在\resources\spring 下面 ...
- 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(1 构建目录环境和依赖)
引言:在用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建一 的基础上 继续进行项目搭建 该部分的主要目的是测通MyBatis 及Spring-dao ...
随机推荐
- 不讲CRUSH的Ceph教程是不完整的
前面我们提到了Ceph是一个支持统一存储架构的分布式存储服务.简单介绍了Ceph的基本概念和基础架构包含的组件,其中最重要的就是底层的RADOS和它的两类守护进程OSD and Monitor.上篇文 ...
- python生成动态个性二维码
1 安装工具2 生成普通二维码3 带图片的二维码4 动态 GIF 二维码5 在Python程序中使用 一.安装 首先在python环境下运行, 打开cmd进入python27 进入scripts 然后 ...
- 生产环境4.3.5jboss内存调优
1.查看jboss的监控工具 http://XXX/jmx-console/htmladaptor 2.查看jvm的监控工具 jdk\bin jvisualvm.exe jmc.exe 3.查看jbo ...
- zencart,分类,所有,显示
改的文件:includes/classes/category_tree.php,最简单的修改 if (!isset($first_element)) { $first_element = ...
- netstat查看服务器连接数端口并发数
简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...
- form表单传输多余参数
1.使用post提交表单,同时在form的action属性后添加“?参数=参数值”,经验证,可行,但是在浏览器中看不到该参数在form参数中,如下图: 上图未出现courseId属性,form代码如下 ...
- mysql外键是多个id组成的字符串,查询方法
借鉴:mysql使用instr达到in(字符串)的效果 结论:select * from 表名where INSTR(CONCAT(字符串),CONCAT(表id)) 问题来源:一表中的某字段是另一表 ...
- Makefile,Shell command,Shell Language 之间的联系
1. Makefile 首先要知道Makefile 是什么东西,Makefile 是一个指令文件,里面存储着自定义的命令(可以借助已有的命令创造而来)在不同的系统下对Makefile 的区别不一样,L ...
- 爬虫-----HTML解析
对HTML的解析: 在解析复杂的HTML的页面时,需要避免一些问题,好让爬虫工作变得得心应手. • 寻找“打印此页”的链接,或者看看网站有没有HTML样式更友好的移动版(把自己 的请求头设置成处于移动 ...
- Python数据分析与展示(1)-数据分析之表示(1)-NumPy库入门
Numpy库入门 从一个数据到一组数据 维度:一组数据的组织形式 一维数据:由对等关系的有序或无序数据构成,采用线性方式组织. 可用类型:对应列表.数组和集合 不同点: 列表:数据类型可以不同 数组: ...