diff --git a/src/core/service/api/context/inner-audio.js b/src/core/service/api/context/inner-audio.js index ac691cff940bb73687a82e2040c779f584e9b9f0..24a437898c643ef000c439f99e7c6ffbb3238cfb 100644 --- a/src/core/service/api/context/inner-audio.js +++ b/src/core/service/api/context/inner-audio.js @@ -1,3 +1,5 @@ +import getRealPath from 'uni-platform/helpers/get-real-path' + /** * 可以批量设置的监听事件 */ @@ -25,6 +27,10 @@ class InnerAudioContext { * 事件监听 */ _events + /** + * 音频地址 + */ + _src /** * 音频上下文初始化 */ @@ -32,15 +38,19 @@ class InnerAudioContext { var audio = this._audio = new Audio() this._stoping = false // 和audio对象同名同效果的属性 - var watchers = ['src', 'autoplay', 'loop', 'duration', 'currentTime', 'paused', 'volume'] - watchers.forEach((watcher) => { - Object.defineProperty(this, watcher, { - set (val) { - audio[watcher] = val - return audio[watcher] + var propertys = ['src', 'autoplay', 'loop', 'duration', 'currentTime', 'paused', 'volume'] + propertys.forEach((property) => { + Object.defineProperty(this, property, { + set: property === 'src' ? (src) => { + audio.src = getRealPath(src) + return this._src = src + } : (val) => { + return audio[property] = val }, - get () { - return audio[watcher] + get: property === 'src' ? () => { + return this._src + } : () => { + return audio[property] } }) })