You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.5 KiB
79 lines
1.5 KiB
const _app = getApp<IAppOption>(); |
|
|
|
// pages/story/a.ts |
|
Component({ |
|
/** |
|
* 组件的属性列表 |
|
*/ |
|
properties: { |
|
url: { |
|
type: String, |
|
value: "", |
|
// 'https://circlehbsaas.oss-cn-beijing.aliyuncs.com/audio/20240907757_tmp_acf4f18c59553a8d2d9f74e173a16328.m4a.mp3', |
|
}, |
|
time: { |
|
type: String, |
|
value: "", |
|
}, |
|
}, |
|
|
|
/** |
|
* 组件的初始数据 |
|
*/ |
|
data: { |
|
play: false, |
|
innerAudioContext: null as WechatMiniprogram.InnerAudioContext | null, |
|
}, |
|
|
|
lifetimes: { |
|
attached() { |
|
this.setData({ |
|
innerAudioContext: wx.createInnerAudioContext(), |
|
}); |
|
}, |
|
detached() { |
|
if (this.data.innerAudioContext) { |
|
this.data.innerAudioContext?.stop(); |
|
this.data.innerAudioContext.destroy() |
|
|
|
} |
|
}, |
|
}, |
|
|
|
/** |
|
* 组件的方法列表 |
|
*/ |
|
methods: { |
|
handlePlay() { |
|
const { url, play, innerAudioContext } = this.data; |
|
if (innerAudioContext) { |
|
if (play) { |
|
innerAudioContext.stop(); |
|
return; |
|
} |
|
innerAudioContext.stop(); |
|
innerAudioContext.src = url; |
|
innerAudioContext.play(); |
|
this.setData({ |
|
play: true, |
|
}); |
|
innerAudioContext.onEnded(() => { |
|
this.setData({ |
|
play: false, |
|
}); |
|
}); |
|
} |
|
}, |
|
handlePause() { |
|
const { innerAudioContext } = this.data; |
|
if (innerAudioContext) { |
|
innerAudioContext.pause(); |
|
this.setData({ |
|
play: false, |
|
}); |
|
} |
|
}, |
|
}, |
|
}); |
|
|
|
export {};
|
|
|