edit: interactivité du player + import depuis json

This commit is contained in:
vgaNAR6ta committed 2026-03-22 01:52:22 +01:00
1 parent ed9f84f040
commit 9982670841
10 files changed
+89 -8

No files matched your search

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,17 @@
[
{
"track":"L'Inverse",
"artist":"Surprise",
"src":"./DATA/Son/1.mp3"
},
{
"track":"Yummy",
"artist":"Ayesha Erotica",
"src":"./DATA/Son/2.mp3"
},
{
"track":"M le Maudit",
"artist":"Mauvais Exemple",
"src":"./DATA/Son/3.mp3"
}
]
+4
View File
@@ -0,0 +1,4 @@
export async function loadAudioData() {
const aData = await fetch('/DATA/audioData.json');
return await aData.json();
}
@@ -1,22 +1,26 @@
<script setup>
import CloseIcon from '../assets/icons/close.svg'
import { loadAudioData } from '@/data/audioData.js'
</script>
<template>
<div id="playerContainer">
<div id="playerCreditStyle">
<p>Test-333</p>
<p>{{audioCredits}}</p>
</div>
<button type="button" class="iconBtnStyle">
<CloseIcon name="test" class="icon"/>
<button type="button" class="iconBtnStyle" @click="prevTrack">
<CloseIcon name="prev" class="icon"/>
</button>
<button type="button" class="iconBtnStyle">
<CloseIcon name="test" class="icon"/>
<button type="button" class="iconBtnStyle" @click="toggleAudio">
<CloseIcon name="toggle" class="icon"/>
</button>
<button type="button" class="iconBtnStyle">
<CloseIcon name="test" class="icon"/>
<button type="button" class="iconBtnStyle" @click="nextTrack">
<CloseIcon name="next" class="icon"/>
</button>
</div>
<audio ref="selectedAudio" @ended="nextTrack">
<source :src="audioFile" type="audio/mpeg">
</audio>
</template>
<style scoped>
@@ -89,7 +93,63 @@
<script>
export default {
name : 'MusicPlayer',
mounted(){
data(){
return{
audioData: [],
selectedSong:{
track: "",
artist: "",
src: ""
},
audioFile:"",
audioCredits:"",
trackCount: 0,
target: null,
isPlaying: false
}
},
methods:{
loadAudio(){
console.log(this.target);
this.target.pause();
this.selectedSong = this.audioData[this.trackCount];
this.audioFile = this.selectedSong.src;
this.audioCredits = this.selectedSong.artist +'-'+ this.selectedSong.track;
this.target.volume = 1;
this.target.load();
if(this.isPlaying){
this.target.play();
}
},
toggleAudio(){
if(this.isPlaying){
this.target.pause();
}else{
this.target.play();
}
this.isPlaying = !this.isPlaying;
},
prevTrack(){
this.trackCount -= 1;
if (this.trackCount<0){
this.trackCount = this.audioData.length - 1;
}
console.log('prev:', this.trackCount);
this.loadAudio();
},
nextTrack(){
this.trackCount += 1;
if (this.trackCount>=this.audioData.length){
this.trackCount = 0;
}
console.log('next:', this.trackCount);
this.loadAudio();
}
},
async mounted(){
this.audioData = await loadAudioData();
this.target = this.$refs.selectedAudio;
this.loadAudio();
console.log("Music player is loaded!");
}
};