您当前的位置: 首页 > 

Clank的游戏栈

暂无认证

  • 5浏览

    0关注

    186博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

超简单的Cocos Creator个性化时间进度条实现,你知道吗?

Clank的游戏栈 发布时间:2020-07-24 17:17:03 ,浏览量:5

前言

在Cocos Creator游戏开发中,经常需要使用个性化时间进度条,下面,我们就一起来封装下自己的个性化时间进度条组件。

一、个性化时间进度条

1: 编写脚本, 来使用sprite的扇形来显示当前的进度: 属性: time_sec: 定时器的时间 clockwise: 是否为顺时针或逆时针; reverse: 是否反转 startClockAction: 开始累积时间,看时间过去的百分比,来改变精灵显示的百分比; stopClockAction: 停止计时累积;

二、计时器控制组件

1.  `@ccclass`

2.  `export default class ClockCtrl extends cc.Component {`

3.  `    @property({tooltip:"计时时长"})`

4.  `    actionTime : number = 10;`

5.  `    @property({tooltip:"是否逆时针"})`

6.  `    clockWise : boolean = false;`

7.  `    @property({tooltip:"计时方向"})`

8.  `    reverse : boolean = false;  // false,由少变多`

9.  `    @property({tooltip:"是否在加载的时候就开始计时"})`

10.  `playOnLoad : boolean = false;`

11.  `    private nowTime : number = 0;   // 用于记录已经过去的时间`

12.  `    private isRuning : boolean = false; // 计时器是否正在行走`

13.  `    private sprite : cc.Sprite;`

14.  `private endFunc : Function = null;`

15.  `    onLoad () {`

16.  `        this.node.active = false;`

17.  `        // 获取子节点上的Sprite组件`

18.  `        this.sprite = this.node.getChildByName("TimerBar").getComponent(cc.Sprite);`

19.  `        if(this.playOnLoad){`

20.  `            this.startClockAction(this.actionTime, this.endFunc);`

21.  `        }`

22.  `}`

23.  `    startClockAction(actionTime : number, endFunc : Function){`

24.  `        if(actionTime  1){`

45.  `            per = 1;`

46.  `            this.isRuning = false;`

47.  `            if(this.endFunc){`

48.  `                this.endFunc();`

49.  `            }`

50.  `        }`

51.  `        // 进度条 由多变少的控制`

52.  `        // per : 0  0.5 1 `

53.  `        // 1-per:1  0.5 0`

54.  `        if(this.reverse){`

55.  `            per = 1 - per;`

56.  `        }`

57.  `        // 顺时针和逆时针的控制`

58.  `        if(this.clockWise){`

59.  `            per = -per;`

60.  `        }`

61.  `        this.sprite.fillRange = per;`

62.  `    }`

63.  `}`

三、UI组件

四、组件的使用测试GameMgr.ts

1.  `const {ccclass, property} = cc._decorator;`

2.  `@ccclass`

3.  `export default class GameMgrextends cc.Component {    `

4.  `    @property({type:ClockCtrl, tooltip:"计时器组件"})`

5.  `    clock : ClockCtrl = null;`

6.  `    @property({tooltip:"计时器计时时长"})`

7.  `    actionTime : number = 5;`

8.  `    private endFunc(){`

9.  `        console.log(this.actionTime,"秒倒计时完成!");`

10.  `    }`

11.  `    start(){`

12.  `        this.clock.startClockAction(this.actionTime, this.endFunc);`

13.  `}`

14.  `}`

关注
打赏
1661738913
查看更多评论
立即登录/注册

微信扫码登录

0.1046s