最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

超簡單的Cocos Creator個性化時間進度條實現(xiàn),你知道嗎?

2022-03-01 19:12 作者:小小游戲開發(fā)程序員  | 我要投稿

前言

在Cocos Creator游戲開發(fā)中,經(jīng)常需要使用個性化時間進度條,下面,我們就一起來封裝下自己的個性化時間進度條組件。

一、個性化時間進度條

1: 編寫腳本, 來使用sprite的扇形來顯示當前的進度: 屬性: time_sec: 定時器的時間 clockwise: 是否為順時針或逆時針; reverse: 是否反轉(zhuǎn) 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; ? // 用于記錄已經(jīng)過去的時間` 12. ?` ? ?private isRuning : boolean = false; // 計時器是否正在行走` 13. ?` ? ?private sprite : cc.Sprite;` 14. ?`private endFunc : Function = null;` 15. ?` ? ?onLoad () {` 16. ?` ? ? ? ?this.node.active = false;` 17. ?` ? ? ? ?// 獲取子節(jié)點上的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 <= 0){` 25. ?` ? ? ? ? ? ?return;` 26. ?` ? ? ? ?}` 27. ?` ? ? ? ?this.endFunc = endFunc;` 28. ?` ? ? ? ?this.node.active = true;` 29. ?` ? ? ? ?this.actionTime = actionTime;` 30. ?` ? ? ? ?this.nowTime = 0;` 31. ?` ? ? ? ?this.isRuning = true;` 32. ?`}` 33. ?` ? ?stopClockAction(){` 34. ?` ? ? ? ?this.node.active = false;` 35. ?` ? ? ? ?this.isRuning = false;` 36. ?`}` 37. ?` ? ?update (dt : number) {` 38. ?` ? ? ? ?if(!this.isRuning){` 39. ?` ? ? ? ? ? ?return;` 40. ?` ? ? ? ?}` 41. ?` ? ? ? ?this.nowTime += dt;` 42. ?` ? ? ? ?// 將時間轉(zhuǎn)換為百分比,設(shè)置給this.sprite的FillRange屬性` 43. ?` ? ? ? ?let per : number = this.nowTime/this.actionTime;` 44. ?` ? ? ? ?if(per > 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. ?`}`





超簡單的Cocos Creator個性化時間進度條實現(xiàn),你知道嗎?的評論 (共 條)

分享到微博請遵守國家法律
望奎县| 兴隆县| 内乡县| 白城市| 安康市| 湖北省| 长垣县| 玉溪市| 柯坪县| 孟连| 二手房| 连云港市| 丹凤县| 高雄市| 高平市| 宁安市| 西吉县| 两当县| 四川省| 建平县| 灵宝市| 祁门县| 石渠县| 庐江县| 临漳县| 彭山县| 巴楚县| 和硕县| 嘉兴市| 文成县| 汝阳县| 阜宁县| 嵩明县| 丽水市| 克什克腾旗| 班戈县| 隆子县| 隆德县| 浦北县| 太仆寺旗| 莲花县|