1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- // 热更新进度条
- cc.Class({
- editor: {
- menu: '嘉米公用/JMLoadProgressBar'
- },
- extends: cc.Component,
- properties: {
- progressBar: cc.ProgressBar,
- progressMarkNode: cc.Node,
- progressLabel: cc.Label,
- _totalTime: 0,
- _currentTime: 0,
- _progress: 0,
- _currentProgress: 0
- },
- onLoad () {
- this._totalTime = 0;
- this._currentTime = 0;
- this._progress = 0;
- this._currentProgress = 0;
- this.updateUI();
- },
- update (dt) {
- if (this._totalTime == 0) {
- return;
- }
- // 超时了,结束
- if (this._totalTime < this._currentTime + dt) {
- this._totalTime = 0;
- this._currentTime = 0;
- this._currentProgress = this._progress;
- this.updateUI();
- return;
- }
- let remainTime = this._totalTime - this._currentTime; // 必定大于0
- let remainProgress = this._progress - this.progressBar.progress;
- let deltaProgress = dt * remainProgress / remainTime;
- this._currentProgress += deltaProgress;
- this._currentTime += dt;
- this.updateUI();
- },
- updateUI () {
- let progress = this._currentProgress;
- this.progressBar.progress = progress;
- let width = this.progressBar.node.width;
- let markX = width * (progress - 0.5);
- this.progressMarkNode.x = markX;
- this.progressLabel.string = Math.floor(progress * 100);
- },
- // 进度
- setProgress (duration, progress) {
- this._totalTime = duration;
- this._currentTime = 0;
- this._progress = progress;
- if (duration == 0) {
- this._currentProgress = progress;
- this.updateUI();
- }
- }
- });
|