1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- const fillIn = (val) => `${val < 10 ? '0' : ''}${val}`;
- const formatTime = (_time) => {
- let time = Math.round(_time);
- let second = Math.round(time % 60);
- let minute = Math.floor((time / 60) % 60);
- let hour = Math.floor(time / 60 / 60);
- return `${fillIn(hour)}:${fillIn(minute)}:${fillIn(second)}`;
- };
- class Audio {
- constructor(obj) {
- const _ts = this;
- const option = (_ts.option = obj.attrs);
- _ts.loop = option.loop === 'true';
- _ts.autoplay = option.autoplay === 'true';
- _ts.create();
- _ts.index = 0;
- }
- create() {
- const _ts = this;
- const option = _ts.option;
- let audio = (_ts.audio = uni.createInnerAudioContext());
- audio.src = option.src;
- // 说明可以播放了
- audio.onCanplay(function () {
- if (_ts.autoplay && !_ts.index) {
- _ts.play();
- }
- if (!_ts.autoplay && !_ts.index) {
- _ts.eventCanplay();
- }
- });
- // 更新时间
- audio.onTimeUpdate(function () {
- //_ts.status = 'update';
- _ts.duration = audio.duration;
- _ts.currentTime = audio.currentTime;
- // 定义播放结束
- if (_ts.duration - _ts.currentTime < 0.5) {
- _ts.index++;
- if (_ts.loop) {
- audio.stop();
- } else {
- _ts.stop();
- }
- audio.seek(0);
- }
- _ts.eventTimeUpdate(formatTime(_ts.duration), formatTime(_ts.currentTime));
- });
- //
- audio.onSeeked(function () {
- if (_ts.loop) {
- _ts.play();
- }
- });
- }
- // 播放
- play() {
- const _ts = this;
- _ts.status = 'play';
- _ts.audio.play();
- _ts.eventPlay();
- }
- // 暂停
- pause() {
- const _ts = this;
- _ts.status = 'pause';
- _ts.audio.pause();
- _ts.eventPause();
- }
- // 停止
- stop() {
- const _ts = this;
- _ts.status = 'stop';
- _ts.audio.stop();
- _ts.eventStop();
- }
- // 销毁
- destroy() {
- const _ts = this;
- _ts.stop();
- _ts.audio.destroy();
- }
- eventCanplay() {}
- eventTimeUpdate() {}
- eventEnded() {}
- eventError() {}
- eventPause() {}
- eventPlay() {}
- eventSeeked() {}
- eventSeeking() {}
- eventStop() {}
- eventWaiting() {}
- }
- module.exports = Audio;
|