101 lines
2.2 KiB
JavaScript
101 lines
2.2 KiB
JavaScript
const Audio = require('./Audio');
|
|
Component({
|
|
options: {
|
|
styleIsolation: 'shared'
|
|
},
|
|
properties: {
|
|
data: {
|
|
type: Object,
|
|
value: {}
|
|
}
|
|
},
|
|
lifetimes:{
|
|
// 页面生命周期
|
|
attached:function(){
|
|
const _ts = this,
|
|
audio = _ts.audio = new Audio(this.data.data);
|
|
|
|
audio.eventPlay = function(){
|
|
_ts.setData({tips:{state:'h2w__audio--play',text:'Playing'}});
|
|
};
|
|
audio.eventCanplay = function(){
|
|
_ts.setData({tips:{state:'h2w__audio--readyed',text:'Readyed'}});
|
|
};
|
|
audio.eventTimeUpdate = function(duration,currentTime){
|
|
_ts.setData({time:{currentTime:currentTime,duration:duration,schedule:Math.round(_ts.audio.currentTime) / Math.round(_ts.audio.duration) * 100 + '%'}});
|
|
};
|
|
audio.eventPause = function(){
|
|
_ts.setData({tips:{state:'h2w__audio--pause',text:'Pause'}});
|
|
};
|
|
audio.eventStop = function(){
|
|
_ts.setData({tips:{state:'h2w__audio--end',text:'End'}});
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// // 更新播放状态
|
|
// _ts.audio.onTimeUpdate = function(duration,currentTime){
|
|
// _ts.setData({
|
|
// playerData:{
|
|
// state:'h2w__audio--play',
|
|
// tips:'Playing',
|
|
// currentTime:currentTime,
|
|
// duration:duration,
|
|
// schedule:_ts.audio.currentTime / _ts.audio.duration * 100 + '%'
|
|
// }
|
|
// });
|
|
// };
|
|
|
|
// _ts.audio.onPause = function(){
|
|
// _ts.setData({playerData:{state:'h2w__audio--pause',tips:'Pause'}});
|
|
// };
|
|
|
|
// _ts.audio.onCanplay = function(){
|
|
// _ts.setData({playerData:{state:'h2w__audio--readyed',tips:'Readyed'}});
|
|
// };
|
|
|
|
// _ts.audio.onError = function(){
|
|
// _ts.setData({playerData:{state:'h2w__audio--error',tips:'Error'}});
|
|
// };
|
|
|
|
// _ts.audio.onEnded = ()=>{
|
|
// _ts.setData({playerData:{state:'h2w__audio--end',tips:'End'}});
|
|
// };
|
|
|
|
},
|
|
moved:function(){
|
|
_ts.audio.stop();
|
|
_ts.audio.destroy();
|
|
},
|
|
detached:()=>{
|
|
_ts.audio.stop();
|
|
_ts.audio.destroy();
|
|
},
|
|
},
|
|
data: {
|
|
tips:{
|
|
state:'',
|
|
text:'--'
|
|
},
|
|
time: {
|
|
currentTime:'00:00:00',
|
|
duration:'00:00:00',
|
|
schedule:'0%'
|
|
}
|
|
},
|
|
methods: {
|
|
playAndPause: function () {
|
|
const _ts = this,
|
|
audio = _ts.audio;
|
|
audio.isTouch = true;
|
|
if(audio.status === 'update' || audio.status === 'play'){
|
|
audio.pause();
|
|
}else{
|
|
audio.play();
|
|
};
|
|
}
|
|
}
|
|
})
|