- 玩溜Cocos Creator入门学习(五)UI系统介绍UI组件
- 玩溜Cocos Creator入门学习(六)UI系统介绍UI组件
- 玩溜Cocos Creator入门学习(九)UI系统介绍UI组件
- 玩溜Cocos Creator入门学习(八)UI系统介绍UI组件
- 玩溜Cocos Creator入门学习(七)UI系统介绍UI组件
- 玩溜Cocos Creator入门学习(四)UI系统介绍UI组件
- 玩溜Cocos Creator入门学习(三)UI系统介绍 UI的
- 玩溜Cocos Creator入门学习(二)UI系统介绍 UI的
- Cocos Creator UI教程 2 布局主界面底部菜单栏
- Cocos Creator UI教程 4.2 商店动画效果的实现
引言
在开发中经常会用到各种各样的进度条,比如说某个操作的进度、加载的进度等等,那么在Cocos Creator中是怎么实现进度条的?
ProgressBar 组件
ProgressBar(进度条)经常被用于在游戏中显示某个操作的进度,在节点上添加 ProgressBar 组件,然后给该组件关联一个 Bar Sprite 就可以在场景中控制 Bar Sprite 来显示进度了。
点击 属性检查器 下面的添加组件按钮,然后从添加 UI 组件中选择ProgressBar
,即可添加 ProgressBar
组件到节点上。
进度条的脚本接口请参考ProgressBar API。
ProgressBar 属性
属性 | 功能说明 |
---|---|
Bar Sprite | 进度条渲染所需要的 Sprite 组件,可以通过拖拽一个带有 Sprite组件的节点到该属性上来建立关联。 |
Mode | 支持 HORIZONTAL(水平)、VERTICAL(垂直)和 FILLED(填充)三种模式,可以通过配合 reverse 属性来改变起始方向。 |
Total Length | 当进度条为 100%时 Bar Sprite 的总长度/总宽度。在 FILLED 模式下 Total Length 表示取 Bar Sprite 总显示范围的百分比,取值范围从 0 ~ 1。 |
Progress | 浮点,取值范围是 0~1,不允许输入之外的数值。 |
Reverse | 布尔值,默认的填充方向是从左至右/从下到上,开启后变成从右到左/从上到下。 |
详细说明
添加 ProgressBar
组件之后,通过从 层级管理器 中拖拽一个带有Sprite
组件的节点到 Bar Sprite
属性上,此时便可以通过拖动 progress 滑块来控制进度条的显示了。
Bar Sprite
可以是自身节点,子节点,或者任何一个带有Sprite
组件的节点。另外,Bar Sprite
可以自由选择 Simple
、Sliced
和 Filled
渲染模式。
进度条的模式选择 FILLED
的情况下,Bar Sprite
的 Type
也需要设置为 FILLED
,否则会报警告。详细使用说明请查阅ProgressBar UI 控件介绍。
范例创建进度条
在使用Cocos Creator
中我们经常要用到控件跟脚本语言关联,这个关联的过程我总结出来两种模式,下面就用Progressbar
这个控件来尝试使用
创建新的ProgressScene
,创建ProgressBar
控件名为progressBarView
,然后在progressBarView
上添加脚本文件ProgressBarScript
。
第一种模式拖拽关联
创建脚本文件,当然我们在创建脚本文件的时候,需要自定义properties
属性来让脚本这个类来接收UI控件并关联
cc.Class({
extends: cc.Component,
// 脚本自定义的属性,当前自定义的属性会在属性检查中查看到
properties: {
speed: 1,
progressBarView: {
type: cc.ProgressBar,
default: null
}
},
//当我们将脚本添加到节点 `node`上面的时候
onLoad: function () {
this._ping = true;
this.progressBarView.progress = 0;
},
update: function (dt) {
this._updateProgressBar(this.progressBarView, dt);
},
_updateProgressBar: function(progressBar, dt){
var progress = progressBar.progress;
if(progress < 1.0 && this._ping){
progress += dt * this.speed;
}
else {
progress -= dt * this.speed;
this._ping = progress <= 0;
}
progressBar.progress = progress;
}
});
当我们在写完这些的时候,将脚本文件添加到节点
上面,拖拽创建的控件ProgressBar
到我的属性progressBarView
上,这样程序就会发现进度条在走,如图
第二种模式代码关联
第二种模式根本上来讲,使用代码的形式获取到你需要的控件,然后去使用这个控件。
注意:在具体实施的时候,为了在重复代码,我们在properties
添加属性progressBarView
来接收代码获取到的控件。
cc.Class({
extends: cc.Component,
properties: {
speed: 1,
progressBarView: {
type: cc.ProgressBar,
default: null
}
},
onLoad: function () {
this._ping = true;
var Prog = this.node.getComponent(cc.ProgressBar);
this.progressBarView = Prog;
this.progressBarView.progress = 0;
},
update: function (dt) {
this._updateProgressBar(this.progressBarView, dt);
},
_updateProgressBar: function(progressBar, dt){
var progress = progressBar.progress;
if(progress < 1.0 && this._ping){
progress += dt * this.speed;
}
else {
progress -= dt * this.speed;
this._ping = progress <= 0;
}
progressBar.progress = progress;
}
});
网友评论