_animateTo(newPos) { this.animation = true; newPos = newPos % 1; this.pos = this.pos % 1; let newPosA, newPosB; if (newPos < this.pos) { newPosA = newPos; newPosB = newPos + 1; } else { newPosA = newPos - 1; newPosB = newPos; } if (Math.abs(newPosA - this.pos) < Math.abs(newPosB - this.pos)) { newPos = newPosA; } else { newPos = newPosB; } this.changeEvent(); animate(this.pos, newPos, ANIMATION_DURATION_IN_MS, pos => { this.pos = pos; this.changeEvent(); }, () => { this.animation = false; this.changeEvent(); }); }
showEnergy: function () { if (!this.user) return; var self = this; var total = Math.round(this.user.Amount); var percent = 1; var level; var nextLevel; var currentLevel; var levelAmounts; var levels = ['银卡会员', '金卡会员', '钻石会员', 'VIP会员', 'SVIP会员', '无敌会员']; self.model.set('vip', total < (levelAmounts = 1000) ? (level = 0, currentLevel = 0, nextLevel = 1000, levels[1]) : total < (levelAmounts = 5000) ? (level = 1, currentLevel = 1000, nextLevel = 5000, levels[2]) : total < (levelAmounts = 10000) ? (level = 2, currentLevel = 5000, nextLevel = 10000, levels[3]) : total < (levelAmounts = 50000) ? (level = 3, currentLevel = 10000, nextLevel = 50000, levels[4]) : (level = 4, nextLevel = '0', levels[5])); percent = Math.min(1, total / levelAmounts); self.model.set({ nextLevel: nextLevel, currentLevel: currentLevel, vipName: levels[level], levelAmounts: levelAmounts, energyPercent: percent * 100 + '%', ucCardAmounts: util.formatMoney(total) + (total > 50000 ? '' : ('/' + util.formatMoney(levelAmounts))) }); if (total != self.model.data.energy) { self.model.set({ energy: total }); animation.animate(function (d) { var num = Math.round(animation.step(0, total, d)); self.model.set('energyAnimNum', num); self.drawCircle(animation.step(0, percent, d)); }, 800, 'ease-out') } },