使用QtQuick如何制作带有冷却效果的按钮
来源:互联网 发布:asp.net系统源码 编辑:程序博客网 时间:2024/05/29 12:23
使用QtQuick如何制作带有冷却效果的按钮
在很多游戏里,一个技能释放之后,需要一段时间冷却,然后才可以继续使用,在我做的小游戏《抗战》中也需要类似的功能,比如炮击、空袭、补给,那么在QML中如何实现这个效果呢?
分析一下整个过程:点击按钮后,按钮进入无效状态,然后背景出现某种冷却的效果,当冷却效果结束后,再置按钮有效。按钮一般是圆形的,有文字。
简单分析之后,“如何制作带有冷却效果的按钮”可以分解为两个小问题:
1 如果绘制圆形按钮?
2 如何连续按钮背景颜色?
1 如何绘制圆形按钮?
开始还是不习惯QML的编程思路,对着文档找Button的属性,找不到任何线索,后来看到了ButtonStyle,在Rectangle类型中有radius,用于绘制圆角矩形,而ButtonStyle可以设置为Rectangle,将Button的高和宽这是为相同的值,再将Rectangle::radius设置为按钮宽度的一半,这时绘制的按钮就是圆形的。
2 如何连续按钮背景颜色?
在Rectangle中有梯度属性gradient,可以设置背景颜色渐变过程。根据这个属性,设置三个GradientStop对象A、B、C,A的位置在0.0,颜色”grey”,C的位置在1.0,颜色"#ccc",关键就在B,B的颜色与A一致为”grey”,然后位置由1.0变到0.0,这样效果就是一个从下往上完成冷却的效果。
顺带还有一个问题:改为原型按钮后,默认字体很小,不好看,这就是第三个问题。
3 如何设置Button字体大小?
还是使用style,使用Text设置ButtonStyle::label属性,可以改变文字大小。
最终的效果是这样子的
代码如下:
// 说明:带有冷却效果的按钮组件// 作者:陶赫 邮箱:taohe_0@163.com ,博客:http://blog.csdn.net/taohe_0// 时间:20170225import QtQuick 2.0import QtQuick.Controls 1.4import QtQuick.Controls.Styles 1.4Button{ id : buttonSelf height: width // 冷却属性 property bool chillDown: false property int chillDownDuration : 3000 style: ButtonStyle { label: Text { verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter font.pointSize: 20 text: control.text } // 定义背景,实现冷却效果 background: Rectangle { implicitWidth: 100 implicitHeight: 25 border.width: control.activeFocus ? 2 : 1 border.color: "#888" // 调整圆角,使按钮看起来是圆形 radius: width / 2 // 冷却效果有三个梯度对象实现,两端固定,中间的GradientStop由1.0端移动到0.0端就能表现出冷却的过程 gradient: Gradient { property double gradientPos: 1.0 GradientStop { position: 0 ; color: control.pressed ? "blue" : "grey"} GradientStop { id : cdGradient; position: 1.0; color: control.pressed ? "blue" : "grey"} GradientStop { position: 1 ; color: control.pressed ? "lightblue" : "#ccc"} } // 完成"冷却"过程 PropertyAnimation { target: cdGradient property: "position" from : 1.0 to : 0.0 duration: chillDownDuration running: chillDown // 启动时,置按钮无效 onStarted: {buttonSelf.enabled = false} // 动画停止时,置按钮有效,冷却标志为无效 onStopped: {buttonSelf.enabled = true;chillDown=false} } } }}
- 使用QtQuick如何制作带有冷却效果的按钮
- [QtQuick]使用QtQuick制作带有光照效果的进度条
- 使用Unity3D制作技能图标冷却效果
- NGUI制作技能冷却效果
- ProgressTimer制作技能冷却效果
- Unity制作技能冷却效果
- Cocos2d-x 带冷却效果的菜单按钮CCMenuItem
- Unity学习——UGUI制作技能的冷却效果
- 如何实现技能冷却效果
- SVG 带有过渡效果的按钮
- 制作按钮的凹陷效果
- 使用js实现带有停顿效果的图片滚动(按钮控制)
- untiy 网格的应用—骰子的制作和技能冷却效果
- 如何制作带有SPLASH界面的程序
- Android自定义带有阴影效果的按钮Demo
- Android 中带有进度条效果的按钮(Button)
- 如何制作渐变的按钮
- 制作3D效果的按钮
- .NET 剖析4.0上ExpandoObject动态扩展对象原理
- 阿拉伯数字转换成罗马数字
- 沉浸式java代码实现
- php快速获取超大文件行数的方法
- 爬虫-漫画喵的100行逆袭
- 使用QtQuick如何制作带有冷却效果的按钮
- coin change
- OPENCV颜色识别
- Elasticsearch2.4.1——安装配置######附带kibana/sense安装
- UVA-272 TEX Quotes
- Eclipse常用快捷键
- [Linux]软链接与硬链接
- PHP json中的大括号和中括号
- oracle clob传临时列语句